On Tue, 10 Jul 2018, Michal Hocko wrote: > What do you think about the following? > > diff --git a/mm/oom_kill.c b/mm/oom_kill.c > index ed9d473c571e..32e6f7becb40 100644 > --- a/mm/oom_kill.c > +++ b/mm/oom_kill.c > @@ -53,6 +53,14 @@ int sysctl_panic_on_oom; > int sysctl_oom_kill_allocating_task; > int sysctl_oom_dump_tasks = 1; > > +/* > + * Serializes oom killer invocations (out_of_memory()) from all contexts to > + * prevent from over eager oom killing (e.g. when the oom killer is invoked > + * from different domains). > + * > + * oom_killer_disable() relies on this lock to stabilize oom_killer_disabled > + * and mark_oom_victim > + */ > DEFINE_MUTEX(oom_lock); > > #ifdef CONFIG_NUMA I think it's better, thanks. However, does it address the question about why __oom_reap_task_mm() needs oom_lock protection? Perhaps it would be helpful to mention synchronization between reaping triggered from oom_reaper and by exit_mmap().