Re: [RFC PATCH 1/8] mm: mmap: unmap large mapping by section

From: Matthew Wilcox
Date: Wed Mar 21 2018 - 18:46:39 EST


On Wed, Mar 21, 2018 at 02:45:44PM -0700, Yang Shi wrote:
> Marking vma as deleted sounds good. The problem for my current approach is
> the concurrent page fault may succeed if it access the not yet unmapped
> section. Marking deleted vma could tell page fault the vma is not valid
> anymore, then return SIGSEGV.
>
> > does not care; munmap will need to wait for the existing munmap operation
>
> Why mmap doesn't care? How about MAP_FIXED? It may fail unexpectedly, right?

The other thing about MAP_FIXED that we'll need to handle is unmapping
conflicts atomically. Say a program has a 200GB mapping and then
mmap(MAP_FIXED) another 200GB region on top of it. So I think page faults
are also going to have to wait for deleted vmas (then retry the fault)
rather than immediately raising SIGSEGV.