rcu: permit rcu_read_unlock() to be called while holding runqueue locks
authorPaul E. McKenney <paul.mckenney@linaro.org>
Thu, 5 May 2011 04:43:49 +0000 (21:43 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Sun, 8 May 2011 05:50:45 +0000 (22:50 -0700)
commit1217ed1ba5c67393293dfb0f03c353b118dadeb4
treea765356c8418e134de85fd05d9fe6eda41de859c
parent29ce831000081dd757d3116bf774aafffc4b6b20
rcu: permit rcu_read_unlock() to be called while holding runqueue locks

Avoid calling into the scheduler while holding core RCU locks.  This
allows rcu_read_unlock() to be called while holding the runqueue locks,
but only as long as there was no chance of the RCU read-side critical
section having been preempted.  (Otherwise, if RCU priority boosting
is enabled, rcu_read_unlock() might call into the scheduler in order to
unboost itself, which might allows self-deadlock on the runqueue locks
within the scheduler.)

Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcutree.c
kernel/rcutree.h
kernel/rcutree_plugin.h