mm: oom_kill: remove unnecessary locking in exit_oom_victim()
authorJohannes Weiner <hannes@cmpxchg.org>
Wed, 24 Jun 2015 23:57:16 +0000 (16:57 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 25 Jun 2015 00:49:43 +0000 (17:49 -0700)
Disabling the OOM killer needs to exclude allocators from entering, not
existing victims from exiting.

Right now the only waiter is suspend code, which achieves quiescence by
disabling the OOM killer.  But later on we want to add waits that hold
the lock instead to stop new victims from showing up.

Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Acked-by: Michal Hocko <mhocko@suse.cz>
Acked-by: David Rientjes <rientjes@google.com>
Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/oom_kill.c

index 472f124..d3490b0 100644 (file)
@@ -437,10 +437,8 @@ void exit_oom_victim(void)
 {
        clear_thread_flag(TIF_MEMDIE);
 
-       down_read(&oom_sem);
        if (!atomic_dec_return(&oom_victims))
                wake_up_all(&oom_victims_wait);
-       up_read(&oom_sem);
 }
 
 /**