ARM: 9128/1: mm: Refactor the __do_page_fault() 57/281557/1
authorWang Kefeng <wangkefeng.wang@huawei.com>
Wed, 22 Sep 2021 13:56:27 +0000 (14:56 +0100)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Tue, 20 Sep 2022 02:46:57 +0000 (11:46 +0900)
Clean up the multiple goto statements and drops local variable
vm_fault_t fault, which will make the __do_page_fault() much more
readability.

No functional change.

Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
[backport of mainline commit caed89dab0ca0e73d7e016c04e1f5957650f4ec3]
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Change-Id: Ice8f005ae5aa4cc54a983a377d89657511bfa632

arch/arm/mm/fault.c

index 59487ee..fcfc0b8 100644 (file)
@@ -205,35 +205,27 @@ __do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
                unsigned int flags, struct task_struct *tsk,
                struct pt_regs *regs)
 {
-       struct vm_area_struct *vma;
-       vm_fault_t fault;
-
-       vma = find_vma(mm, addr);
-       fault = VM_FAULT_BADMAP;
+       struct vm_area_struct *vma = find_vma(mm, addr);
        if (unlikely(!vma))
-               goto out;
-       if (unlikely(vma->vm_start > addr))
-               goto check_stack;
+               return VM_FAULT_BADMAP;
+
+       if (unlikely(vma->vm_start > addr)) {
+               if (!(vma->vm_flags & VM_GROWSDOWN))
+                       return VM_FAULT_BADMAP;
+               if (addr < FIRST_USER_ADDRESS)
+                       return VM_FAULT_BADMAP;
+               if (expand_stack(vma, addr))
+                       return VM_FAULT_BADMAP;
+       }
 
        /*
         * Ok, we have a good vm_area for this
         * memory access, so we can handle it.
         */
-good_area:
-       if (access_error(fsr, vma)) {
-               fault = VM_FAULT_BADACCESS;
-               goto out;
-       }
+       if (access_error(fsr, vma))
+               return VM_FAULT_BADACCESS;
 
        return handle_mm_fault(vma, addr & PAGE_MASK, flags, regs);
-
-check_stack:
-       /* Don't allow expansion below FIRST_USER_ADDRESS */
-       if (vma->vm_flags & VM_GROWSDOWN &&
-           addr >= FIRST_USER_ADDRESS && !expand_stack(vma, addr))
-               goto good_area;
-out:
-       return fault;
 }
 
 static int __kprobes