rcu: Move callback-list warning to irq-disable region
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 19 Jul 2017 17:56:46 +0000 (10:56 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 25 Jul 2017 20:04:50 +0000 (13:04 -0700)
commit09efeeee173e9f541b15157d30658cd8b23ec4f3
tree05f9ac743eef48f6da68dd5eeb088086b7ffe6d0
parentaed4e046863820e6d06ebf7c079e9ad924608edf
rcu: Move callback-list warning to irq-disable region

After adopting callbacks from a newly offlined CPU, the adopting CPU
checks to make sure that its callback list's count is zero only if the
list has no callbacks and vice versa.  Unfortunately, it does so after
enabling interrupts, which means that false positives are possible due to
interrupt handlers invoking call_rcu().  Although these false positives
are improbable, rcutorture did make it happen once.

This commit therefore moves this check to an irq-disabled region of code,
thus suppressing the false positive.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/tree.c