• Michal Hocko's avatar
    oom: thaw the OOM victim if it is frozen · 63a8ca9b
    Michal Hocko authored
    oom_kill_process only sets TIF_MEMDIE flag and sends a signal to the
    victim.  This is basically noop when the task is frozen though because the
    task sleeps in the uninterruptible sleep.  The victim is eventually thawed
    later when oom_scan_process_thread meets the task again in a later OOM
    invocation so the OOM killer doesn't live lock.  But this is less than
    optimal.
    
    Let's add __thaw_task into mark_tsk_oom_victim after we set TIF_MEMDIE to
    the victim.  We are not checking whether the task is frozen because that
    would be racy and __thaw_task does that already.  oom_scan_process_thread
    doesn't need to care about freezer anymore as TIF_MEMDIE and freezer are
    excluded completely now.
    Signed-off-by: default avatarMichal Hocko <mhocko@suse.cz>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    63a8ca9b
oom_kill.c 20.6 KB