diff options
author | Heiko Carstens <hca@linux.ibm.com> | 2023-10-12 10:40:50 +0300 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2023-10-23 19:21:23 +0300 |
commit | b61a0922b6dc7dfa6cef5c6d8ab1036826c43b8d (patch) | |
tree | c2af652f6e48b8a9f180f3f4927bdc3fd51d918a /arch/s390 | |
parent | 0f86ac4ba71329936c44ef71222f1c50284a8928 (diff) | |
download | linux-b61a0922b6dc7dfa6cef5c6d8ab1036826c43b8d.tar.xz |
s390/mm,fault: remove VM_FAULT_SIGNAL
Remove VM_FAULT_SIGNAL and open-code it at the only two locations
where it is used.
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/mm/fault.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 05c908051e93..7dd965d153d5 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -51,7 +51,6 @@ */ #define VM_FAULT_BADMAP ((__force vm_fault_t)0x40000000) #define VM_FAULT_BADACCESS ((__force vm_fault_t)0x20000000) -#define VM_FAULT_SIGNAL ((__force vm_fault_t)0x10000000) enum fault_type { KERNEL_FAULT, @@ -291,10 +290,6 @@ static void do_fault_error(struct pt_regs *regs, vm_fault_t fault) } do_no_context(regs); break; - case VM_FAULT_SIGNAL: - if (!user_mode(regs)) - do_no_context(regs); - break; default: /* fault & VM_FAULT_ERROR */ if (fault & VM_FAULT_OOM) { if (!user_mode(regs)) @@ -393,8 +388,9 @@ static void do_exception(struct pt_regs *regs, int access) count_vm_vma_lock_event(VMA_LOCK_RETRY); /* Quick path to respond to signals */ if (fault_signal_pending(fault, regs)) { - fault = VM_FAULT_SIGNAL; - goto out; + if (!user_mode(regs)) + handle_fault_error_nolock(regs); + return; } lock_mmap: mmap_read_lock(mm); @@ -429,10 +425,11 @@ retry: goto out_up; fault = handle_mm_fault(vma, address, flags, regs); if (fault_signal_pending(fault, regs)) { - fault = VM_FAULT_SIGNAL; if (flags & FAULT_FLAG_RETRY_NOWAIT) - goto out_up; - goto out; + mmap_read_unlock(mm); + if (!user_mode(regs)) + handle_fault_error_nolock(regs); + return; } /* The fault is fully completed (including releasing mmap lock) */ if (fault & VM_FAULT_COMPLETED) { |