On Thu, 20 Aug 2020 12:38:35 +0200 Peter Zijlstra <pet...@infradead.org> wrote:
Looks good to me. Acked-by: Masami Hiramatsu <mhira...@kernel.org> Thanks, > > Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org> > --- > arch/x86/include/asm/kprobes.h | 4 ++++ > arch/x86/kernel/traps.c | 10 ++++------ > 2 files changed, 8 insertions(+), 6 deletions(-) > > --- a/arch/x86/include/asm/kprobes.h > +++ b/arch/x86/include/asm/kprobes.h > @@ -106,5 +106,9 @@ extern int kprobe_exceptions_notify(stru > extern int kprobe_int3_handler(struct pt_regs *regs); > extern int kprobe_debug_handler(struct pt_regs *regs); > > +#else > + > +static inline int kprobe_debug_handler(struct pt_regs *regs) { return 0; } > + > #endif /* CONFIG_KPROBES */ > #endif /* _ASM_X86_KPROBES_H */ > --- a/arch/x86/kernel/traps.c > +++ b/arch/x86/kernel/traps.c > @@ -806,12 +806,6 @@ static void handle_debug(struct pt_regs > /* Store the virtualized DR6 value */ > tsk->thread.debugreg6 = dr6; > > -#ifdef CONFIG_KPROBES > - if (kprobe_debug_handler(regs)) { > - return; > - } > -#endif > - > if (notify_die(DIE_DEBUG, "debug", regs, (long)&dr6, 0, > SIGTRAP) == NOTIFY_STOP) { > return; > @@ -877,8 +871,12 @@ static __always_inline void exc_debug_ke > if ((dr6 & DR_STEP) && is_sysenter_singlestep(regs)) > dr6 &= ~DR_STEP; > > + if (kprobe_debug_handler(regs)) > + goto out; > + > handle_debug(regs, dr6, false); > > +out: > instrumentation_end(); > idtentry_exit_nmi(regs, irq_state); > > > -- Masami Hiramatsu <mhira...@kernel.org>