From a88f85cc630ebfcc399920495892d4db3b08b119 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Tue, 4 Mar 2008 14:29:16 -0800 Subject: [PATCH] --- yaml --- r: 86827 b: refs/heads/master c: fb59e9f1e9786635ea12e12bf6adbb132e10f979 h: refs/heads/master i: 86825: 093c1e97ffd0508e4ca6ec563e8f6e8715098cee 86823: 9de700c921e85dceb327f169e9c8b14fb539f7af v: v3 --- [refs] | 2 +- trunk/mm/memcontrol.c | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 4b41435176ee..79a010bb5e3e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9b3c0a07e0fca35e36751680de3e4c76dbff5df3 +refs/heads/master: fb59e9f1e9786635ea12e12bf6adbb132e10f979 diff --git a/trunk/mm/memcontrol.c b/trunk/mm/memcontrol.c index f72067094e05..8b9f6cae938e 100644 --- a/trunk/mm/memcontrol.c +++ b/trunk/mm/memcontrol.c @@ -623,13 +623,13 @@ static int mem_cgroup_charge_common(struct page *page, struct mm_struct *mm, goto retry; } page_assign_page_cgroup(page, pc); - unlock_page_cgroup(page); mz = page_cgroup_zoneinfo(pc); spin_lock_irqsave(&mz->lru_lock, flags); __mem_cgroup_add_list(pc); spin_unlock_irqrestore(&mz->lru_lock, flags); + unlock_page_cgroup(page); done: return 0; out: @@ -677,14 +677,14 @@ void mem_cgroup_uncharge_page(struct page *page) VM_BUG_ON(pc->ref_cnt <= 0); if (--(pc->ref_cnt) == 0) { - page_assign_page_cgroup(page, NULL); - unlock_page_cgroup(page); - mz = page_cgroup_zoneinfo(pc); spin_lock_irqsave(&mz->lru_lock, flags); __mem_cgroup_remove_list(pc); spin_unlock_irqrestore(&mz->lru_lock, flags); + page_assign_page_cgroup(page, NULL); + unlock_page_cgroup(page); + mem = pc->mem_cgroup; res_counter_uncharge(&mem->res, PAGE_SIZE); css_put(&mem->css); @@ -736,23 +736,24 @@ void mem_cgroup_page_migration(struct page *page, struct page *newpage) return; } - page_assign_page_cgroup(page, NULL); - unlock_page_cgroup(page); - mz = page_cgroup_zoneinfo(pc); spin_lock_irqsave(&mz->lru_lock, flags); __mem_cgroup_remove_list(pc); spin_unlock_irqrestore(&mz->lru_lock, flags); + page_assign_page_cgroup(page, NULL); + unlock_page_cgroup(page); + pc->page = newpage; lock_page_cgroup(newpage); page_assign_page_cgroup(newpage, pc); - unlock_page_cgroup(newpage); mz = page_cgroup_zoneinfo(pc); spin_lock_irqsave(&mz->lru_lock, flags); __mem_cgroup_add_list(pc); spin_unlock_irqrestore(&mz->lru_lock, flags); + + unlock_page_cgroup(newpage); } /*