Merge tag 'rcu-urgent.2022.12.17a' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / kernel / rcu / tree.c
index d04f2192f02c93b84d4c704d07542307696e544f..cf34a961821ade1b05ab4053e02606227eebaf00 100644 (file)
@@ -1362,7 +1362,7 @@ static void rcu_poll_gp_seq_start(unsigned long *snap)
 {
        struct rcu_node *rnp = rcu_get_root();
 
-       if (rcu_init_invoked())
+       if (rcu_scheduler_active != RCU_SCHEDULER_INACTIVE)
                raw_lockdep_assert_held_rcu_node(rnp);
 
        // If RCU was idle, note beginning of GP.
@@ -1378,7 +1378,7 @@ static void rcu_poll_gp_seq_end(unsigned long *snap)
 {
        struct rcu_node *rnp = rcu_get_root();
 
-       if (rcu_init_invoked())
+       if (rcu_scheduler_active != RCU_SCHEDULER_INACTIVE)
                raw_lockdep_assert_held_rcu_node(rnp);
 
        // If the previously noted GP is still in effect, record the
@@ -1401,7 +1401,8 @@ static void rcu_poll_gp_seq_start_unlocked(unsigned long *snap)
        struct rcu_node *rnp = rcu_get_root();
 
        if (rcu_init_invoked()) {
-               lockdep_assert_irqs_enabled();
+               if (rcu_scheduler_active != RCU_SCHEDULER_INACTIVE)
+                       lockdep_assert_irqs_enabled();
                raw_spin_lock_irqsave_rcu_node(rnp, flags);
        }
        rcu_poll_gp_seq_start(snap);
@@ -1417,7 +1418,8 @@ static void rcu_poll_gp_seq_end_unlocked(unsigned long *snap)
        struct rcu_node *rnp = rcu_get_root();
 
        if (rcu_init_invoked()) {
-               lockdep_assert_irqs_enabled();
+               if (rcu_scheduler_active != RCU_SCHEDULER_INACTIVE)
+                       lockdep_assert_irqs_enabled();
                raw_spin_lock_irqsave_rcu_node(rnp, flags);
        }
        rcu_poll_gp_seq_end(snap);