• Michal Hocko's avatar
    mm, oom: tighten task_will_free_mem() locking · 091f362c
    Michal Hocko authored
    "mm, oom: fortify task_will_free_mem" has dropped task_lock around
    task_will_free_mem in oom_kill_process bacause it assumed that a
    potential race when the selected task exits will not be a problem as the
    oom_reaper will call exit_oom_victim.
    
    Tetsuo was objecting that nommu doesn't have oom_reaper so the race
    would be still possible.  The code would be racy and lockup prone
    theoretically in other aspects without the oom reaper anyway so I didn't
    considered this a big deal.  But it seems that further changes I am
    planning in this area will benefit from stable task->mm in this path as
    well.  So let's drop find_lock_task_mm from task_will_free_mem and call
    it from under task_lock as we did previously.  Just pull the task->mm !=
    NULL check inside the function.
    
    Link: http://lkml.kernel.org/r/1467201562-6709-1-git-send-email-mhocko@kernel.orgSigned-off-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Vladimir Davydov <vdavydov@parallels.com>
    Cc: David Rientjes <rientjes@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    091f362c
oom_kill.c 29 KB