forked from Minki/linux
rcu: Add lockdep checks to synchronous expedited primitives
The non-expedited synchronize_*rcu() primitives have lockdep checks, but their expedited counterparts lack these checks. This commit therefore adds these checks to the expedited synchronize_*rcu() primitives. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
bb4e2c08bb
commit
8dc79888a7
@ -639,6 +639,11 @@ void synchronize_sched_expedited(void)
|
|||||||
{
|
{
|
||||||
struct rcu_state *rsp = &rcu_sched_state;
|
struct rcu_state *rsp = &rcu_sched_state;
|
||||||
|
|
||||||
|
RCU_LOCKDEP_WARN(lock_is_held(&rcu_bh_lock_map) ||
|
||||||
|
lock_is_held(&rcu_lock_map) ||
|
||||||
|
lock_is_held(&rcu_sched_lock_map),
|
||||||
|
"Illegal synchronize_sched_expedited() in RCU read-side critical section");
|
||||||
|
|
||||||
/* If only one CPU, this is automatically a grace period. */
|
/* If only one CPU, this is automatically a grace period. */
|
||||||
if (rcu_blocking_is_gp())
|
if (rcu_blocking_is_gp())
|
||||||
return;
|
return;
|
||||||
@ -708,6 +713,11 @@ void synchronize_rcu_expedited(void)
|
|||||||
{
|
{
|
||||||
struct rcu_state *rsp = rcu_state_p;
|
struct rcu_state *rsp = rcu_state_p;
|
||||||
|
|
||||||
|
RCU_LOCKDEP_WARN(lock_is_held(&rcu_bh_lock_map) ||
|
||||||
|
lock_is_held(&rcu_lock_map) ||
|
||||||
|
lock_is_held(&rcu_sched_lock_map),
|
||||||
|
"Illegal synchronize_rcu_expedited() in RCU read-side critical section");
|
||||||
|
|
||||||
if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
|
if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
|
||||||
return;
|
return;
|
||||||
_synchronize_rcu_expedited(rsp, sync_rcu_exp_handler);
|
_synchronize_rcu_expedited(rsp, sync_rcu_exp_handler);
|
||||||
|
Loading…
Reference in New Issue
Block a user