[GIT RFC PULL rcu/urgent] Fix lockdep issue in rcu_print_task_stall()
From: Paul E. McKenney
Date: Mon Nov 16 2020 - 17:01:54 EST
Hello!
This pull request contains a single commit that fixes a bug that was
introduced a couple of merge windows ago, but which rather more recently
converged to an agreed-upon fix. The bug is that interrupts can be
incorrectly enabled while holding an irq-disabled spinlock. This can
of course result in self-deadlocks.
The bug is a bit difficult to trigger. It requires that a preempted
task be blocking a preemptible-RCU grace period long enough to trigger
an RCU CPU stall warning. In addition, an interrupt must occur at just
the right time, and that interrupt's handler must acquire that same
irq-disabled spinlock. Still, a deadlock is a deadlock.
Furthermore, we do now have a fix, and that fix survives kernel test
robot, -next, and rcutorture testing. It has also been verified by
Sebastian as fixing the bug. Therefore...
The following changes since commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec:
Linux 5.10-rc1 (2020-10-25 15:14:11 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git urgent-fixes
for you to fetch changes up to c583bcb8f5edd48c1798798e341f78afb9bf4f6f:
rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled (2020-11-10 17:10:38 -0800)
----------------------------------------------------------------
Paul E. McKenney (1):
rcu: Don't invoke try_invoke_on_locked_down_task() with irqs disabled
kernel/rcu/tree_stall.h | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)