Messages in this thread | | | Subject | Re: [RFC v3 PATCH 5/5] x86: check VM_DEAD flag in page fault | From | Yang Shi <> | Date | Mon, 2 Jul 2018 11:10:23 -0700 |
| |
On 7/2/18 10:57 AM, Michal Hocko wrote: > On Mon 02-07-18 10:24:27, Yang Shi wrote: >> >> On 7/2/18 6:37 AM, Michal Hocko wrote: >>> On Mon 02-07-18 15:33:11, Laurent Dufour wrote: >>>> On 02/07/2018 14:45, Michal Hocko wrote: >>>>> On Mon 02-07-18 14:26:09, Laurent Dufour wrote: >>>>>> On 02/07/2018 14:15, Michal Hocko wrote: >>> [...] >>>>>>> We already do have a model for that. Have a look at MMF_UNSTABLE. >>>>>> MMF_UNSTABLE is a mm's flag, here this is a VMA's flag which is checked. >>>>> Yeah, and we have the VMA ready for all places where we do check the >>>>> flag. check_stable_address_space can be made to get vma rather than mm. >>>> Yeah, this would have been more efficient to check that flag at the beginning >>>> of the page fault handler rather than the end, but this way it will be easier >>>> to handle the speculative page fault too ;) >>> The thing is that it doesn't really need to be called earlier. You are >>> not risking data corruption on file backed mappings. >> OK, I just think it could save a few cycles to check the flag earlier. > This should be an extremely rare case. Just think about it. It should > only ever happen when an access races with munmap which itself is > questionable if not an outright bug. > >> If nobody think it is necessary, we definitely could re-use >> check_stable_address_space(), > If we really need this whole VM_DEAD thing then it should be better > handled at the same place rather than some ad-hoc places. > >> just return VM_FAULT_SIGSEGV for VM_DEAD vma, >> and check for both shared and non-shared. > Why would you even care about shared mappings?
Just thought about we are dealing with VM_DEAD, which means the vma will be tore down soon regardless it is shared or non-shared.
MMF_UNSTABLE doesn't care about !shared case.
| |