On Tue, 25 Jul 2017 12:40:05 +0200
Ingo Molnar <mi...@kernel.org> wrote:

> 
> * Masami Hiramatsu <mhira...@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 <mhira...@kernel.org>
> > Reported-by: Francis Deslauriers <francis.deslauri...@efficios.com>
> > Tested-by: Francis Deslauriers <francis.deslauri...@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 <mhira...@kernel.org>

Reply via email to