[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <201712080044.BID56711.FFVOLMStJOQHOF@I-love.SAKURA.ne.jp>
Date: Fri, 8 Dec 2017 00:44:11 +0900
From: Tetsuo Handa <penguin-kernel@...ove.SAKURA.ne.jp>
To: mhocko@...nel.org, rientjes@...gle.com
Cc: akpm@...ux-foundation.org, aarcange@...hat.com,
linux-kernel@...r.kernel.org, linux-mm@...ck.org
Subject: Re: Multiple oom_reaper BUGs: unmap_page_range racing with exit_mmap
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.
Powered by blists - more mailing lists