On Sat, Oct 20, 2018 at 06:47:53PM +0900, Masami Hiramatsu wrote:
> Since commit a19b2e3d7839 ("kprobes/x86: Remove IRQ disabling from
> ftrace-based/optimized kprobes”) removes local_irq_save/restore()
> from optimized_callback(), the handler does not protected against
> reschedule interrupt. If it is able to be preempted (rescheduled)
> by such interrupt, we don't need to use _no_resched macro.

must not.

> Let's use preempt_enable() instead.
> 
> Fixes: a19b2e3d7839 ("kprobes/x86: Remove IRQ disabling from 
> ftrace-based/optimized kprobes”)
> Link: 
> https://lkml.kernel.org/r/[email protected]
> Reported-by: Nadav Amit <[email protected]>
> Signed-off-by: Masami Hiramatsu <[email protected]>
> ---
>  arch/x86/kernel/kprobes/opt.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
> index eaf02f2e7300..40b16b270656 100644
> --- a/arch/x86/kernel/kprobes/opt.c
> +++ b/arch/x86/kernel/kprobes/opt.c
> @@ -179,7 +179,7 @@ optimized_callback(struct optimized_kprobe *op, struct 
> pt_regs *regs)
>               opt_pre_handler(&op->kp, regs);
>               __this_cpu_write(current_kprobe, NULL);
>       }
> -     preempt_enable_no_resched();
> +     preempt_enable();
>  }

Indeed,

Acked-by: Peter Zijlstra (Intel) <[email protected]>

Reply via email to