From: Guo Ren Date: Mon, 28 Dec 2020 13:01:00 +0000 (+0000) Subject: csky: Add faulthandler_disabled() check X-Git-Tag: v5.12-rc1~3^2~14 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=06f3f764417b04db765cbdee2dfeaef29fa52214;p=thirdparty%2Fkernel%2Flinux.git 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 --- diff --git a/arch/csky/mm/fault.c b/arch/csky/mm/fault.c index cecca6729b040..9533bd8d9a6ae 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);