Messages in this thread | | | Date | Thu, 1 Apr 2021 09:30:36 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH] riscv: keep interrupts disabled for BREAKPOINT exception |
| |
Hi,
On Wed, 31 Mar 2021 22:22:44 +0800 Jisheng Zhang <jszhang3@mail.ustc.edu.cn> wrote:
> On Tue, 30 Mar 2021 18:33:16 +0900 > Masami Hiramatsu <mhiramat@kernel.org> wrote: > > > Hi Jisheng, > > Hi Masami, > > > > > On Tue, 30 Mar 2021 02:16:24 +0800 > > Jisheng Zhang <jszhang3@mail.ustc.edu.cn> wrote: > > > > > From: Jisheng Zhang <jszhang@kernel.org> > > > > > > Current riscv's kprobe handlers are run with both preemption and > > > interrupt enabled, this violates kprobe requirements. Fix this issue > > > by keeping interrupts disabled for BREAKPOINT exception. > > > > Not only while the breakpoint exception but also until the end of > > the single step (maybe you are using __BUG_INSN_32 ??) need to be > > disable interrupts. Can this do that? > > > > interrupt is disabled during "single step" by kprobes_save_local_irqflag() > and kprobes_restore_local_irqflag(). The code flow looks like: > > do_trap_break() // for bp > kprobe_breakpoint_handler() > setup_singlestep() > kprobes_restore_local_irqflag() > > do_trap_break() // for ss > kprobe_single_step_handler() > kprobes_restore_local_irqflag()
OK, thanks for the confirmation!
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
Thanks,
-- Masami Hiramatsu <mhiramat@kernel.org>
| |