diff options
author | David Rientjes <rientjes@google.com> | 2014-08-06 19:07:50 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-06 21:01:21 -0400 |
commit | 8d060bf490930f305c4efc45724e861a268f4d2f (patch) | |
tree | 96c2c1ee46be53f13d73f365cbbf3615325738b1 /mm | |
parent | 6e90b58be7545c2cb2306fa186ccf5888c76c559 (diff) |
mm, oom: ensure memoryless node zonelist always includes zones
With memoryless node support being worked on, it's possible that for
optimizations that a node may not have a non-NULL zonelist. When
CONFIG_NUMA is enabled and node 0 is memoryless, this means the zonelist
for first_online_node may become NULL.
The oom killer requires a zonelist that includes all memory zones for
the sysrq trigger and pagefault out of memory handler.
Ensure that a non-NULL zonelist is always passed to the oom killer.
[akpm@linux-foundation.org: fix non-numa build]
Signed-off-by: David Rientjes <rientjes@google.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Rik van Riel <riel@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/oom_kill.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 3291e82d4352..b0a1e1ff0353 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
@@ -694,7 +694,7 @@ void pagefault_out_of_memory(void) | |||
694 | if (mem_cgroup_oom_synchronize(true)) | 694 | if (mem_cgroup_oom_synchronize(true)) |
695 | return; | 695 | return; |
696 | 696 | ||
697 | zonelist = node_zonelist(first_online_node, GFP_KERNEL); | 697 | zonelist = node_zonelist(first_memory_node, GFP_KERNEL); |
698 | if (try_set_zonelist_oom(zonelist, GFP_KERNEL)) { | 698 | if (try_set_zonelist_oom(zonelist, GFP_KERNEL)) { |
699 | out_of_memory(NULL, 0, 0, NULL, false); | 699 | out_of_memory(NULL, 0, 0, NULL, false); |
700 | clear_zonelist_oom(zonelist, GFP_KERNEL); | 700 | clear_zonelist_oom(zonelist, GFP_KERNEL); |