Messages in this thread | | | Date | Wed, 31 Mar 2021 22:22:44 +0800 | From | Jisheng Zhang <> | Subject | Re: [PATCH] riscv: keep interrupts disabled for BREAKPOINT exception |
| |
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()
Thanks
| |