Re: [PATCH -tip V2] [BUGFIX] kprobes/x86: Do not jump-optimize kprobes on irq entry code

From: Ingo Molnar
Date: Tue Jul 25 2017 - 06:43:05 EST



* Masami Hiramatsu <mhiramat@xxxxxxxxxx> 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@xxxxxxxxxx>
> Reported-by: Francis Deslauriers <francis.deslauriers@xxxxxxxxxxxx>
> Tested-by: Francis Deslauriers <francis.deslauriers@xxxxxxxxxxxx>
> ---
> 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