* Masami Hiramatsu <[email protected]> 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 <[email protected]>
> Reported-by: Francis Deslauriers <[email protected]>
> Tested-by: Francis Deslauriers <[email protected]>
> ---
> 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) &&
^~~~~~~~~~~~~~~~~~~~~
Thanks,
Ingo