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.