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 472f124e5f083061f14bb50b97ee177a3d44a94b..d3490b019d46ed6a0f1eb58a89119d3ee7dfdb10 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);
 }
 
 /**