diff options
author | Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> | 2016-06-24 17:48:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-06-24 20:23:52 -0400 |
commit | 9df10fb7b80bc2f540956ba01b5e7ee1012001a5 (patch) | |
tree | a64cab11f81e017ca0b27d785e6922d008231403 /mm | |
parent | 491a1c65ae498dea0e39b24a46e528a78a8532ed (diff) |
oom_reaper: avoid pointless atomic_inc_not_zero usage.
Since commit 36324a990cf5 ("oom: clear TIF_MEMDIE after oom_reaper
managed to unmap the address space") changed to use find_lock_task_mm()
for finding a mm_struct to reap, it is guaranteed that mm->mm_users > 0
because find_lock_task_mm() returns a task_struct with ->mm != NULL.
Therefore, we can safely use atomic_inc().
Link: http://lkml.kernel.org/r/1465024759-8074-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/oom_kill.c | 8 |
1 files changed, 1 insertions, 7 deletions
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index be67df3b6569..ddf74487f848 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
@@ -474,14 +474,8 @@ static bool __oom_reap_task(struct task_struct *tsk) | |||
474 | p = find_lock_task_mm(tsk); | 474 | p = find_lock_task_mm(tsk); |
475 | if (!p) | 475 | if (!p) |
476 | goto unlock_oom; | 476 | goto unlock_oom; |
477 | |||
478 | mm = p->mm; | 477 | mm = p->mm; |
479 | if (!atomic_inc_not_zero(&mm->mm_users)) { | 478 | atomic_inc(&mm->mm_users); |
480 | task_unlock(p); | ||
481 | mm = NULL; | ||
482 | goto unlock_oom; | ||
483 | } | ||
484 | |||
485 | task_unlock(p); | 479 | task_unlock(p); |
486 | 480 | ||
487 | if (!down_read_trylock(&mm->mmap_sem)) { | 481 | if (!down_read_trylock(&mm->mmap_sem)) { |