]> git.karo-electronics.de Git - karo-tx-linux.git/commit
oom: remove oom_disable_count
authorDavid Rientjes <rientjes@google.com>
Wed, 5 Oct 2011 00:42:49 +0000 (11:42 +1100)
committerStephen Rothwell <sfr@canb.auug.org.au>
Wed, 12 Oct 2011 06:32:01 +0000 (17:32 +1100)
commitbb42c4c230c165cff2db9e8fdc19e9abb39c640f
tree2592a06fda86743c5c0bfb3a583378b9ae18239f
parent01e852bd97431c9e6cdb799cf37bcff5487ec26b
oom: remove oom_disable_count

This removes mm->oom_disable_count entirely since it's unnecessary and
currently buggy.  The counter was intended to be per-process but it's
currently decremented in the exit path for each thread that exits, causing
it to underflow.

The count was originally intended to prevent oom killing threads that
share memory with threads that cannot be killed since it doesn't lead to
future memory freeing.  The counter could be fixed to represent all
threads sharing the same mm, but it's better to remove the count since:

 - it is possible that the OOM_DISABLE thread sharing memory with the
   victim is waiting on that thread to exit and will actually cause
   future memory freeing, and

 - there is no guarantee that a thread is disabled from oom killing just
   because another thread sharing its mm is oom disabled.

Signed-off-by: David Rientjes <rientjes@google.com>
Reported-by: Oleg Nesterov <oleg@redhat.com>
Cc: Ying Han <yinghan@google.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
fs/exec.c
fs/proc/base.c
include/linux/mm_types.h
kernel/exit.c
kernel/fork.c
mm/oom_kill.c