Hi, On Wed, 31 Mar 2021 22:22:44 +0800 Jisheng Zhang <jszha...@mail.ustc.edu.cn> wrote:
> On Tue, 30 Mar 2021 18:33:16 +0900 > Masami Hiramatsu <mhira...@kernel.org> wrote: > > > Hi Jisheng, > > Hi Masami, > > > > > On Tue, 30 Mar 2021 02:16:24 +0800 > > Jisheng Zhang <jszha...@mail.ustc.edu.cn> wrote: > > > > > From: Jisheng Zhang <jszh...@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 <mhira...@kernel.org> Thanks, -- Masami Hiramatsu <mhira...@kernel.org>