aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>2011-03-23 19:42:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-03-23 22:46:22 -0400
commit56039efa18f2530fc23e8ef19e716b65ee2a1d1e (patch)
treea61cbd2f760e93363657622de2cd1591db028458
parent6c191cd01a935e5b53ef43c9403c771bb7a32b60 (diff)
memcg: fix ugly initialization of return value is in caller
Remove initialization of vaiable in caller of memory cgroup function. Actually, it's return value of memcg function but it's initialized in caller. Some memory cgroup uses following style to bring the result of start function to the end function for avoiding races. mem_cgroup_start_A(&(*ptr)) /* Something very complicated can happen here. */ mem_cgroup_end_A(*ptr) In some calls, *ptr should be initialized to NULL be caller. But it's ugly. This patch fixes that *ptr is initialized by _start function. Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--mm/memcontrol.c8
-rw-r--r--mm/memory.c2
-rw-r--r--mm/migrate.c2
-rw-r--r--mm/swapfile.c2
4 files changed, 9 insertions, 5 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index e1ee6ad9c971..b56bd74b486f 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2475,7 +2475,7 @@ int mem_cgroup_cache_charge(struct page *page, struct mm_struct *mm,
2475 2475
2476 /* shmem */ 2476 /* shmem */
2477 if (PageSwapCache(page)) { 2477 if (PageSwapCache(page)) {
2478 struct mem_cgroup *mem = NULL; 2478 struct mem_cgroup *mem;
2479 2479
2480 ret = mem_cgroup_try_charge_swapin(mm, page, gfp_mask, &mem); 2480 ret = mem_cgroup_try_charge_swapin(mm, page, gfp_mask, &mem);
2481 if (!ret) 2481 if (!ret)
@@ -2501,6 +2501,8 @@ int mem_cgroup_try_charge_swapin(struct mm_struct *mm,
2501 struct mem_cgroup *mem; 2501 struct mem_cgroup *mem;
2502 int ret; 2502 int ret;
2503 2503
2504 *ptr = NULL;
2505
2504 if (mem_cgroup_disabled()) 2506 if (mem_cgroup_disabled())
2505 return 0; 2507 return 0;
2506 2508
@@ -2916,6 +2918,8 @@ int mem_cgroup_prepare_migration(struct page *page,
2916 enum charge_type ctype; 2918 enum charge_type ctype;
2917 int ret = 0; 2919 int ret = 0;
2918 2920
2921 *ptr = NULL;
2922
2919 VM_BUG_ON(PageTransHuge(page)); 2923 VM_BUG_ON(PageTransHuge(page));
2920 if (mem_cgroup_disabled()) 2924 if (mem_cgroup_disabled())
2921 return 0; 2925 return 0;
@@ -3058,7 +3062,7 @@ int mem_cgroup_shmem_charge_fallback(struct page *page,
3058 struct mm_struct *mm, 3062 struct mm_struct *mm,
3059 gfp_t gfp_mask) 3063 gfp_t gfp_mask)
3060{ 3064{
3061 struct mem_cgroup *mem = NULL; 3065 struct mem_cgroup *mem;
3062 int ret; 3066 int ret;
3063 3067
3064 if (mem_cgroup_disabled()) 3068 if (mem_cgroup_disabled())
diff --git a/mm/memory.c b/mm/memory.c
index 615be5127ce1..20d5f7499ce2 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2767,7 +2767,7 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
2767 swp_entry_t entry; 2767 swp_entry_t entry;
2768 pte_t pte; 2768 pte_t pte;
2769 int locked; 2769 int locked;
2770 struct mem_cgroup *ptr = NULL; 2770 struct mem_cgroup *ptr;
2771 int exclusive = 0; 2771 int exclusive = 0;
2772 int ret = 0; 2772 int ret = 0;
2773 2773
diff --git a/mm/migrate.c b/mm/migrate.c
index 89e5c3fe8bbc..b0406d739ea7 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -633,7 +633,7 @@ static int unmap_and_move(new_page_t get_new_page, unsigned long private,
633 struct page *newpage = get_new_page(page, private, &result); 633 struct page *newpage = get_new_page(page, private, &result);
634 int remap_swapcache = 1; 634 int remap_swapcache = 1;
635 int charge = 0; 635 int charge = 0;
636 struct mem_cgroup *mem = NULL; 636 struct mem_cgroup *mem;
637 struct anon_vma *anon_vma = NULL; 637 struct anon_vma *anon_vma = NULL;
638 638
639 if (!newpage) 639 if (!newpage)
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 71b42ec55b78..039e61677635 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -880,7 +880,7 @@ unsigned int count_swap_pages(int type, int free)
880static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd, 880static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd,
881 unsigned long addr, swp_entry_t entry, struct page *page) 881 unsigned long addr, swp_entry_t entry, struct page *page)
882{ 882{
883 struct mem_cgroup *ptr = NULL; 883 struct mem_cgroup *ptr;
884 spinlock_t *ptl; 884 spinlock_t *ptl;
885 pte_t *pte; 885 pte_t *pte;
886 int ret = 1; 886 int ret = 1;