]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
s390/mm: Cleanup fault error handling
authorHeiko Carstens <hca@linux.ibm.com>
Wed, 23 Oct 2024 17:36:40 +0000 (19:36 +0200)
committerHeiko Carstens <hca@linux.ibm.com>
Tue, 29 Oct 2024 10:49:19 +0000 (11:49 +0100)
Combine the two VM_FAULT_ERROR checks in do_exception() and move them
to the exit path, similar to x86. Also remove a random blank line.

Suggested-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/mm/fault.c

index 8bd2b8d64273eb72dea63a9ebecbeed199dd9b8e..94cb2e092075538aca02c484f2b4db1a32a04a78 100644 (file)
@@ -293,14 +293,11 @@ static void 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 (unlikely(fault & VM_FAULT_ERROR))
-                       goto error;
-               return;
+               goto done;
        }
        count_vm_vma_lock_event(VMA_LOCK_RETRY);
        if (fault & VM_FAULT_MAJOR)
                flags |= FAULT_FLAG_TRIED;
-
        /* Quick path to respond to signals */
        if (fault_signal_pending(fault, regs)) {
                if (!user_mode(regs))
@@ -323,17 +320,14 @@ retry:
        /* The fault is fully completed (including releasing mmap lock) */
        if (fault & VM_FAULT_COMPLETED)
                return;
-       if (unlikely(fault & VM_FAULT_ERROR)) {
-               mmap_read_unlock(mm);
-               goto error;
-       }
        if (fault & VM_FAULT_RETRY) {
                flags |= FAULT_FLAG_TRIED;
                goto retry;
        }
        mmap_read_unlock(mm);
-       return;
-error:
+done:
+       if (!(fault & VM_FAULT_ERROR))
+               return;
        if (fault & VM_FAULT_OOM) {
                if (!user_mode(regs))
                        handle_fault_error_nolock(regs, 0);