lkml.org 
[lkml]   [2021]   [Jun]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 1/7] ARM: mm: Rafactor the __do_page_fault()
    Date
    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>
    ---
    arch/arm/mm/fault.c | 34 +++++++++++++---------------------
    1 file changed, 13 insertions(+), 21 deletions(-)

    diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
    index efa402025031..662ac3ca3c8a 100644
    --- a/arch/arm/mm/fault.c
    +++ b/arch/arm/mm/fault.c
    @@ -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
    --
    2.26.2
    \
     
     \ /
      Last update: 2021-06-02 08:54    [W:2.398 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site