Messages in this thread | | | Date | Mon, 17 Apr 2023 01:57:01 +0800 | Subject | Re: [PATCH 2/2] LoongArch: Relay BCE exceptions to userland as SIGSEGVs with si_code=SEGV_BNDERR | From | WANG Xuerui <> |
| |
On 4/17/23 01:33, WANG Xuerui wrote: > <snip> > @@ -589,6 +591,110 @@ static void bug_handler(struct pt_regs *regs) > } > } > > +asmlinkage void noinstr do_bce(struct pt_regs *regs) > +{ > + irqentry_state_t state = irqentry_enter(regs); > + bool user = user_mode(regs); > + unsigned long era = exception_era(regs); > + union loongarch_instruction insn; > + u64 badv = 0, lower = 0, upper = ULONG_MAX; > + > + if (regs->csr_prmd & CSR_PRMD_PIE) > + local_irq_enable(); > + > + current->thread.trap_nr = read_csr_excode(); > + > + /* > + * notify the kprobe handlers, if instruction is likely to > + * pertain to them. > + */ > + if (notify_die(DIE_BOUNDS_CHECK, "Bounds check error", regs, 0, > + current->thread.trap_nr, SIGSEGV) == NOTIFY_STOP) > + goto out; > + > + __show_regs(regs);
Ah, remnant of debug code. Please ignore this line; I'm not resending for now because I fully anticipate a v2 (and possibly even more). Lack of coffee/tea and presence of beer during weekends aren't going to help...
-- WANG "xen0n" Xuerui
Linux/LoongArch mailing list: https://lore.kernel.org/loongarch/
| |