diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 427b1152b0082d6e8eb4c46d6a088d8a92e0196d..b2996525b273fa958a946f365d5577fb18483135 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -745,14 +745,19 @@ static bool arm64_do_kernel_sea(void __user *addr, unsigned int esr, return false; err = apei_claim_sea(regs); - if (err) { - regs->pc = orig_pc; - pr_emerg("apei claim sea failed. addr: %#lx, esr: %#x\n", - (unsigned long)addr, esr); - } + if (err) + pr_emerg( + "comm: %s pid: %d apei claim sea failed. addr: %#lx, esr: %#x\n", + current->comm, current->pid, (unsigned long)addr, esr); + + if (!current->mm) { + if (err) { + regs->pc = orig_pc; + return false; + } - if (!current->mm) - return err ? false : true; + return true; + } set_thread_esr(0, esr); arm64_force_sig_fault(sig, code, addr,