Messages in this thread |  | | Subject | Re: [patch 1/2] mm, mmu_notifier: annotate mmu notifiers with blockable invalidate callbacks | From | Paolo Bonzini <> | Date | Mon, 11 Dec 2017 23:23:54 +0100 |
| |
On 11/12/2017 23:11, David Rientjes wrote: > Commit 4d4bbd8526a8 ("mm, oom_reaper: skip mm structs with mmu notifiers") > prevented the oom reaper from unmapping private anonymous memory with the > oom reaper when the oom victim mm had mmu notifiers registered. > > The rationale is that doing mmu_notifier_invalidate_range_{start,end}() > around the unmap_page_range(), which is needed, can block and the oom > killer will stall forever waiting for the victim to exit, which may not > be possible without reaping. > > That concern is real, but only true for mmu notifiers that have blockable > invalidate_range_{start,end}() callbacks. This patch adds a "flags" field > for mmu notifiers that can set a bit to indicate that these callbacks do > block.
Why not put the flag in the ops, since the same ops should always be either blockable or unblockable?
Paolo
> The implementation is steered toward an expensive slowpath, such as after > the oom reaper has grabbed mm->mmap_sem of a still alive oom victim. > > Signed-off-by: David Rientjes <rientjes@google.com>
|  |