All of lore.kernel.org
 help / color / mirror / Atom feed
* + memcg-fix-ugly-initialization-of-return-value-is-in-caller.patch added to -mm tree
@ 2011-01-27 23:15 akpm
  0 siblings, 0 replies; only message in thread
From: akpm @ 2011-01-27 23:15 UTC (permalink / raw)
  To: mm-commits; +Cc: kamezawa.hiroyu, balbir, hannes, nishimura


The patch titled
     memcg: fix ugly initialization of return value is in caller
has been added to the -mm tree.  Its filename is
     memcg-fix-ugly-initialization-of-return-value-is-in-caller.patch

Before you just go and hit "reply", please:
   a) Consider who else should be cc'ed
   b) Prefer to cc a suitable mailing list as well
   c) Ideally: find the original patch on the mailing list and do a
      reply-to-all to that, adding suitable additional cc's

*** Remember to use Documentation/SubmitChecklist when testing your code ***

See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
out what to do about this

The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/

------------------------------------------------------
Subject: memcg: fix ugly initialization of return value is in caller
From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

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>
---

 mm/memcontrol.c |    8 ++++++--
 mm/memory.c     |    2 +-
 mm/migrate.c    |    2 +-
 mm/swapfile.c   |    2 +-
 4 files changed, 9 insertions(+), 5 deletions(-)

diff -puN mm/memcontrol.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller mm/memcontrol.c
--- a/mm/memcontrol.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller
+++ a/mm/memcontrol.c
@@ -2413,7 +2413,7 @@ int mem_cgroup_cache_charge(struct page 
 
 	/* shmem */
 	if (PageSwapCache(page)) {
-		struct mem_cgroup *mem = NULL;
+		struct mem_cgroup *mem;
 
 		ret = mem_cgroup_try_charge_swapin(mm, page, gfp_mask, &mem);
 		if (!ret)
@@ -2439,6 +2439,8 @@ int mem_cgroup_try_charge_swapin(struct 
 	struct mem_cgroup *mem;
 	int ret;
 
+	*ptr = NULL;
+
 	if (mem_cgroup_disabled())
 		return 0;
 
@@ -2854,6 +2856,8 @@ int mem_cgroup_prepare_migration(struct 
 	enum charge_type ctype;
 	int ret = 0;
 
+	*ptr = NULL;
+
 	VM_BUG_ON(PageTransHuge(page));
 	if (mem_cgroup_disabled())
 		return 0;
@@ -2996,7 +3000,7 @@ int mem_cgroup_shmem_charge_fallback(str
 			    struct mm_struct *mm,
 			    gfp_t gfp_mask)
 {
-	struct mem_cgroup *mem = NULL;
+	struct mem_cgroup *mem;
 	int ret;
 
 	if (mem_cgroup_disabled())
diff -puN mm/memory.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller mm/memory.c
--- a/mm/memory.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller
+++ a/mm/memory.c
@@ -2707,7 +2707,7 @@ static int do_swap_page(struct mm_struct
 	swp_entry_t entry;
 	pte_t pte;
 	int locked;
-	struct mem_cgroup *ptr = NULL;
+	struct mem_cgroup *ptr;
 	int exclusive = 0;
 	int ret = 0;
 
diff -puN mm/migrate.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller mm/migrate.c
--- a/mm/migrate.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller
+++ a/mm/migrate.c
@@ -623,7 +623,7 @@ static int unmap_and_move(new_page_t get
 	struct page *newpage = get_new_page(page, private, &result);
 	int remap_swapcache = 1;
 	int charge = 0;
-	struct mem_cgroup *mem = NULL;
+	struct mem_cgroup *mem;
 	struct anon_vma *anon_vma = NULL;
 
 	if (!newpage)
diff -puN mm/swapfile.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller mm/swapfile.c
--- a/mm/swapfile.c~memcg-fix-ugly-initialization-of-return-value-is-in-caller
+++ a/mm/swapfile.c
@@ -880,7 +880,7 @@ unsigned int count_swap_pages(int type, 
 static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd,
 		unsigned long addr, swp_entry_t entry, struct page *page)
 {
-	struct mem_cgroup *ptr = NULL;
+	struct mem_cgroup *ptr;
 	spinlock_t *ptl;
 	pte_t *pte;
 	int ret = 1;
_

Patches currently in -mm which might be from kamezawa.hiroyu@jp.fujitsu.com are

origin.patch
memsw-handle-swapaccount-kernel-parameter-correctly.patch
memsw-deprecate-noswapaccount-kernel-parameter-and-schedule-it-for-removal.patch
oom-suppress-nodes-that-are-not-allowed-from-meminfo-on-oom-kill.patch
oom-suppress-show_mem-for-many-nodes-in-irq-context-on-page-alloc-failure.patch
oom-suppress-nodes-that-are-not-allowed-from-meminfo-on-page-alloc-failure.patch
mm-add-replace_page_cache_page-function.patch
memcg-fix-ugly-initialization-of-return-value-is-in-caller.patch


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-01-27 23:15 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-27 23:15 + memcg-fix-ugly-initialization-of-return-value-is-in-caller.patch added to -mm tree akpm

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.