mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
srcu: Make Tiny synchronize_srcu() check for readers
This commit adds lockdep checks for illegal use of synchronize_srcu() within same-type SRCU read-side critical sections and within normal RCU read-side critical sections. It also makes synchronize_srcu() be a no-op during early boot. These changes bring Tiny synchronize_srcu() into line with both Tree synchronize_srcu() and Tiny synchronize_rcu(). Signed-off-by: Zqiang <qiang1.zhang@intel.com> Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Tested-by: John Ogness <john.ogness@linutronix.de>
This commit is contained in:
parent
0cd7e350ab
commit
51f5f78a4f
1 changed files with 10 additions and 0 deletions
|
@ -197,6 +197,16 @@ void synchronize_srcu(struct srcu_struct *ssp)
|
||||||
{
|
{
|
||||||
struct rcu_synchronize rs;
|
struct rcu_synchronize rs;
|
||||||
|
|
||||||
|
RCU_LOCKDEP_WARN(lockdep_is_held(ssp) ||
|
||||||
|
lock_is_held(&rcu_bh_lock_map) ||
|
||||||
|
lock_is_held(&rcu_lock_map) ||
|
||||||
|
lock_is_held(&rcu_sched_lock_map),
|
||||||
|
"Illegal synchronize_srcu() in same-type SRCU (or in RCU) read-side critical section");
|
||||||
|
|
||||||
|
if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
might_sleep();
|
||||||
init_rcu_head_on_stack(&rs.head);
|
init_rcu_head_on_stack(&rs.head);
|
||||||
init_completion(&rs.completion);
|
init_completion(&rs.completion);
|
||||||
call_srcu(ssp, &rs.head, wakeme_after_rcu);
|
call_srcu(ssp, &rs.head, wakeme_after_rcu);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue