diff options
author | Sven Schnelle | 2023-07-13 15:54:23 +0200 |
---|---|---|
committer | Heiko Carstens | 2023-07-18 15:34:51 +0200 |
commit | 7686762d1ed092db4d120e29b565712c969dc075 (patch) | |
tree | ca8c33d7090c8f7c2bc44a40c8393f7a63818d72 /arch/s390 | |
parent | fdf0eaf11452d72945af31804e2a1048ee1b574c (diff) |
s390/mm: fix per vma lock fault handling
With per-vma locks, handle_mm_fault() may return non-fatal error
flags. In this case the code should reset the fault flags before
returning.
Fixes: e06f47a16573 ("s390/mm: try VMA lock-based page fault handling first")
Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/mm/fault.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index dbe8394234e2..2f123429a291 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -421,6 +421,8 @@ static inline vm_fault_t do_exception(struct pt_regs *regs, int access) vma_end_read(vma); if (!(fault & VM_FAULT_RETRY)) { count_vm_vma_lock_event(VMA_LOCK_SUCCESS); + if (likely(!(fault & VM_FAULT_ERROR))) + fault = 0; goto out; } count_vm_vma_lock_event(VMA_LOCK_RETRY); |