]> git.baikalelectronics.ru Git - kernel.git/commit
oom: prevent livelock when oom_kill_allocating_task is set
authorDavid Rientjes <rientjes@google.com>
Wed, 6 May 2009 23:02:55 +0000 (16:02 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 6 May 2009 23:36:09 +0000 (16:36 -0700)
commit1db9b77d81d15e691ed639ad276e9106454b58f8
treec16b7d56d5603ae9d120a99cbf814195d750a380
parent6a00aa0003e86e87b0a437444acf9ea78d320502
oom: prevent livelock when oom_kill_allocating_task is set

When /proc/sys/vm/oom_kill_allocating_task is set for large systems that
want to avoid the lengthy tasklist scan, it's possible to livelock if
current is ineligible for oom kill.  This normally happens when it is set
to OOM_DISABLE, but is also possible if any threads are sharing the same
->mm with a different tgid.

So change __out_of_memory() to fall back to the full task-list scan if it
was unable to kill `current'.

Cc: Nick Piggin <npiggin@suse.de>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/oom_kill.c