Messages in this thread | | | Date | Tue, 25 Jul 2017 22:45:47 +0900 | From | Masami Hiramatsu <> | Subject | Re: [PATCH -tip V2] [BUGFIX] kprobes/x86: Do not jump-optimize kprobes on irq entry code |
| |
On Tue, 25 Jul 2017 12:40:05 +0200 Ingo Molnar <mingo@kernel.org> wrote:
> > * Masami Hiramatsu <mhiramat@kernel.org> wrote: > > > Since the kernel segment registers are not prepared at the > > entry of irq-entry code, if a kprobe on such code is > > jump-optimized, accessing per-cpu variables may cause > > kernel panic. > > However, if the kprobe is not optimized, it kicks int3 > > exception and set segment registers correctly. > > > > This checks probe-address and if it is in irq-entry code, > > it prohibits optimizing such kprobes. This means we can > > continuously probing such interrupt handlers by kprobes > > but it is not optimized anymore. > > > > Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> > > Reported-by: Francis Deslauriers <francis.deslauriers@efficios.com> > > Tested-by: Francis Deslauriers <francis.deslauriers@efficios.com> > > --- > > Changes in V2: > > - Make changes in kprobe/opt.c local, not involving unwind, > > since it requires CONFIG_FRAME_POINTER=y (Thanks Mathieu!) > > This patch doesn't even build on x86-64 defconfig ... > > arch/x86/kernel/kprobes/opt.c: In function ‘can_optimize’: > arch/x86/kernel/kprobes/opt.c:259:32: error: ‘__irqentry_text_start’ undeclared > (first use in this function) > ((paddr >= (unsigned long)__irqentry_text_start) && > ^~~~~~~~~~~~~~~~~~~~~
Oops, yes, hmm, I missed below ifdef...
#if defined(CONFIG_FUNCTION_GRAPH_TRACER) || defined(CONFIG_KASAN)
Or, I think we can define those as NULL in interrupt.h.
Thanks,
> > Thanks, > > Ingo
-- Masami Hiramatsu <mhiramat@kernel.org>
| |