| From e00e431612c3a6e437a01f2129fd3843da0c982a Mon Sep 17 00:00:00 2001 |
| From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> |
| Date: Wed, 11 Nov 2009 14:26:26 -0800 |
| Subject: memcg: fix wrong pointer initialization at page migration when memcg is disabled. |
| |
| From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> |
| |
| commit e00e431612c3a6e437a01f2129fd3843da0c982a upstream. |
| |
| Lee Schermerhorn reported that he saw bad pointer dereference in |
| mem_cgroup_end_migration() when he disabled memcg by boot option. |
| |
| memcg's page migration logic works as |
| |
| mem_cgroup_prepare_migration(page, &ptr); |
| do page migration |
| mem_cgroup_end_migration(page, ptr); |
| |
| Now, ptr is not initialized in prepare_migration when memcg is disabled |
| by boot option. This causes panic in end_migration. This patch fixes it. |
| |
| Reported-by: Lee Schermerhorn <Lee.Schermerhorn@hp.com> |
| Cc: Balbir Singh <balbir@in.ibm.com> |
| Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> |
| Reviewed-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| mm/migrate.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/mm/migrate.c |
| +++ b/mm/migrate.c |
| @@ -597,7 +597,7 @@ static int unmap_and_move(new_page_t get |
| struct page *newpage = get_new_page(page, private, &result); |
| int rcu_locked = 0; |
| int charge = 0; |
| - struct mem_cgroup *mem; |
| + struct mem_cgroup *mem = NULL; |
| |
| if (!newpage) |
| return -ENOMEM; |