[PATCH] cpuset: oom panic fix

cpuset_excl_nodes_overlap always returns 0 if current is exiting. This caused
customer's systems to panic in the OOM killer when processes were having
trouble getting memory for the final put_user in mm_release. Even though
there were lots of processes to kill.

Change to returning 1 in this case. This achieves parity with !CONFIG_CPUSETS
case, and was observed to fix the problem.

Signed-off-by: Nick Piggin <npiggin@suse.de>
Acked-by: Paul Jackson <pj@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

authored by Nick Piggin and committed by Linus Torvalds 0d673a5a 36920e06

+1 -1
+1 -1
kernel/cpuset.c
··· 2420 int cpuset_excl_nodes_overlap(const struct task_struct *p) 2421 { 2422 const struct cpuset *cs1, *cs2; /* my and p's cpuset ancestors */ 2423 - int overlap = 0; /* do cpusets overlap? */ 2424 2425 task_lock(current); 2426 if (current->flags & PF_EXITING) {
··· 2420 int cpuset_excl_nodes_overlap(const struct task_struct *p) 2421 { 2422 const struct cpuset *cs1, *cs2; /* my and p's cpuset ancestors */ 2423 + int overlap = 1; /* do cpusets overlap? */ 2424 2425 task_lock(current); 2426 if (current->flags & PF_EXITING) {