Re: BUG: using __this_cpu_read() in preemptible code in trace_hardirqs_on

From: Steven Rostedt
Date: Thu Oct 22 2020 - 16:32:52 EST


On Thu, 22 Oct 2020 12:30:28 +0200
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> Subject: lockdep: Fix preemption WARN for spurious IRQ-enable
> From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Date: Thu Oct 22 12:23:02 CEST 2020
>
> It is valid (albeit uncommon) to call local_irq_enable() without first
> having called local_irq_disable(). In this case we enter
> lockdep_hardirqs_on*() with IRQs enabled and trip a preemption warning
> for using __this_cpu_read().
>
> Use this_cpu_read() instead to avoid the warning.

I was wondering why you were using __this_cpu_read() in the first place.

Reviewed-by: Steven Rostedt (VMware) <rostedt@xxxxxxxxxxx>

-- Steve


>
> Fixes: 4d004099a6 ("lockdep: Fix lockdep recursion")
> Reported-by: syzbot+53f8ce8bbc07924b6417@xxxxxxxxxxxxxxxxxxxxxxxxx
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>