On Fri, Oct 6, 2023 at 12:53 PM Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> wrote: > > Most file-backed faults are already handled through ->map_pages(), > but if we need to do I/O we'll come this way. Since filemap_fault() > is now safe to be called under the VMA lock, we can handle these faults > under the VMA lock now. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@xxxxxxxxxxxxx> Reviewed-by: Suren Baghdasaryan <surenb@xxxxxxxxxx> > --- > mm/memory.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/mm/memory.c b/mm/memory.c > index 938f481df0ab..e615afd28db2 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -4617,10 +4617,9 @@ static vm_fault_t do_read_fault(struct vm_fault *vmf) > return ret; > } > > - if (vmf->flags & FAULT_FLAG_VMA_LOCK) { > - vma_end_read(vmf->vma); > - return VM_FAULT_RETRY; > - } > + ret = vmf_can_call_fault(vmf); > + if (ret) > + return ret; > > ret = __do_fault(vmf); > if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY))) > -- > 2.40.1 >