rcu: move check from rcu_dereference_bh to rcu_read_lock_bh_held
As suggested by Linus, push the irqs_disabled() down to the rcu_read_lock_bh_held() level so that all callers get the benefit of the correct check. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
b3a084b9b6
commit
773e3f9357
@ -454,7 +454,7 @@ static inline notrace void rcu_read_unlock_sched_notrace(void)
|
|||||||
* Makes rcu_dereference_check() do the dirty work.
|
* Makes rcu_dereference_check() do the dirty work.
|
||||||
*/
|
*/
|
||||||
#define rcu_dereference_bh(p) \
|
#define rcu_dereference_bh(p) \
|
||||||
rcu_dereference_check(p, rcu_read_lock_bh_held() || irqs_disabled())
|
rcu_dereference_check(p, rcu_read_lock_bh_held())
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rcu_dereference_sched - fetch RCU-protected pointer, checking for RCU-sched
|
* rcu_dereference_sched - fetch RCU-protected pointer, checking for RCU-sched
|
||||||
|
@ -86,7 +86,7 @@ int rcu_read_lock_bh_held(void)
|
|||||||
{
|
{
|
||||||
if (!debug_lockdep_rcu_enabled())
|
if (!debug_lockdep_rcu_enabled())
|
||||||
return 1;
|
return 1;
|
||||||
return in_softirq();
|
return in_softirq() || irqs_disabled();
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(rcu_read_lock_bh_held);
|
EXPORT_SYMBOL_GPL(rcu_read_lock_bh_held);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user