OSDN Git Service

rcu: Simplify rcu_report_dead() call to rcu_report_exp_rdp()
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 29 Jul 2021 22:35:21 +0000 (15:35 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 13 Sep 2021 23:32:46 +0000 (16:32 -0700)
Currently, rcu_report_dead() disables preemption across its call to
rcu_report_exp_rdp(), but this is pointless because interrupts are
already disabled by the caller.  In addition, rcu_report_dead() computes
the address of the outgoing CPU's rcu_data structure, which is also
pointless because this address is already present in local variable rdp.
This commit therefore drops the preemption disabling and passes rdp
to rcu_report_exp_rdp().

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c

index 801075e..dc29684 100644 (file)
@@ -4294,9 +4294,7 @@ void rcu_report_dead(unsigned int cpu)
        do_nocb_deferred_wakeup(rdp);
 
        /* QS for any half-done expedited grace period. */
-       preempt_disable();
-       rcu_report_exp_rdp(this_cpu_ptr(&rcu_data));
-       preempt_enable();
+       rcu_report_exp_rdp(rdp);
        rcu_preempt_deferred_qs(current);
 
        /* Remove outgoing CPU from mask in the leaf rcu_node structure. */