diff options
author | Guo Ren <guoren@linux.alibaba.com> | 2020-12-28 13:01:00 +0000 |
---|---|---|
committer | Guo Ren <guoren@linux.alibaba.com> | 2021-01-12 09:52:41 +0800 |
commit | 06f3f764417b04db765cbdee2dfeaef29fa52214 (patch) | |
tree | 7a6430d1afa5c24c60e52194daed8731e89d2017 /arch/csky | |
parent | 3e455cf5f30f87bc871d5fe891841a2cefb29234 (diff) |
csky: Add faulthandler_disabled() check
Similar to other architectures:
In addition to in_atomic, we also need pagefault_disabled() to
check.
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Diffstat (limited to 'arch/csky')
-rw-r--r-- | arch/csky/mm/fault.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/csky/mm/fault.c b/arch/csky/mm/fault.c index cecca6729b04..9533bd8d9a6a 100644 --- a/arch/csky/mm/fault.c +++ b/arch/csky/mm/fault.c @@ -143,12 +143,11 @@ asmlinkage void do_page_fault(struct pt_regs *regs) return; } - perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); /* * If we're in an interrupt or have no user * context, we must not take the fault.. */ - if (in_atomic() || !mm) + if (unlikely(faulthandler_disabled() || !mm)) goto bad_area_nosemaphore; if (user_mode(regs)) @@ -157,6 +156,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) if (is_write(regs)) flags |= FAULT_FLAG_WRITE; + perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); retry: mmap_read_lock(mm); vma = find_vma(mm, address); |