Messages in this thread | | | Date | Fri, 21 Aug 2020 22:54:01 +0900 | From | Masami Hiramatsu <> | Subject | Re: [RFC][PATCH 3/7] x86/debug: Move kprobe_debug_handler() into exc_debug_kernel() |
| |
On Thu, 20 Aug 2020 12:38:35 +0200 Peter Zijlstra <peterz@infradead.org> wrote:
Looks good to me.
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Thanks,
> > Signed-off-by: Peter Zijlstra (Intel) <peterz@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 <mhiramat@kernel.org>
| |