diff options
author | KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> | 2011-06-15 15:08:42 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-15 20:04:01 -0700 |
commit | 37573e8c718277103f61f03741bdc5606d31b07e (patch) | |
tree | 7142211508420a8ea90b8ae01bfa5ee93ffa1a44 /mm/memcontrol.c | |
parent | 8957712710e045044e3c44375c6a87d7ffa17d51 (diff) | |
download | kernel-mfld-blackbay-37573e8c718277103f61f03741bdc5606d31b07e.tar.gz kernel-mfld-blackbay-37573e8c718277103f61f03741bdc5606d31b07e.tar.bz2 kernel-mfld-blackbay-37573e8c718277103f61f03741bdc5606d31b07e.zip |
memcg: fix init_page_cgroup nid with sparsemem
Commit 21a3c9646873 ("memcg: allocate memory cgroup structures in local
nodes") makes page_cgroup allocation as NUMA aware. But that caused a
problem https://bugzilla.kernel.org/show_bug.cgi?id=36192.
The problem was getting a NID from invalid struct pages, which was not
initialized because it was out-of-node, out of [node_start_pfn,
node_end_pfn)
Now, with sparsemem, page_cgroup_init scans pfn from 0 to max_pfn. But
this may scan a pfn which is not on any node and can access memmap which
is not initialized.
This makes page_cgroup_init() for SPARSEMEM node aware and remove a code
to get nid from page->flags. (Then, we'll use valid NID always.)
[akpm@linux-foundation.org: try to fix up comments]
Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memcontrol.c')
0 files changed, 0 insertions, 0 deletions