Messages in this thread | | | Subject | Re: Multiple oom_reaper BUGs: unmap_page_range racing with exit_mmap | From | Tetsuo Handa <> | Date | Fri, 8 Dec 2017 00:44:11 +0900 |
| |
Michal Hocko wrote: > David, could you test with this patch please?
Even if this patch solved David's case, you need to update
* tsk_is_oom_victim() cannot be set from under us * either because current->mm is already set to NULL * under task_lock before calling mmput and oom_mm is * set not NULL by the OOM killer only if current->mm * is found not NULL while holding the task_lock.
part as well, for it is the explanation of why tsk_is_oom_victim() test was expected to work.
Also, do we need to do
set_bit(MMF_OOM_SKIP, &mm->flags);
if mm_is_oom_victim(mm) == false?
exit_mmap() is called means that nobody can reach this mm except ->signal->oom_mm, and mm_is_oom_victim(mm) == false means that this mm cannot be reached by ->signal->oom_mm .
Then, I think we do not need to set MMF_OOM_SKIP on this mm at exit_mmap() if mm_is_oom_victim(mm) == false.
| |