--- x/mm/oom_kill.c +++ y/mm/oom_kill.c @@ -997,6 +997,8 @@ static void __oom_kill_process(struct ta queue_oom_reaper(victim); mmdrop(mm); + write_lock_irq(&tasklist_lock); + write_unlock_irq(&tasklist_lock); put_task_struct(victim); } @@ -1031,6 +1033,8 @@ static void oom_kill_process(struct oom_ mark_oom_victim(victim); queue_oom_reaper(victim); task_unlock(victim); + write_lock_irq(&tasklist_lock); + write_unlock_irq(&tasklist_lock); put_task_struct(victim); return; }