rcu: Make rcu_gp_cleanup() write only once to ->gp_flags
At the end of rcu_gp_cleanup(), if another grace period is needed, but not via rcu_accelerate_cbs(), the ->gp_flags field is written twice, once when making the new grace-period request, and once when clearing all other types of requests. This commit therefore adds an else-clause to avoid this double write. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
26d950a945
commit
18390aeae7
|
@ -2117,8 +2117,9 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
|
||||||
rsp->gp_req_activity = jiffies;
|
rsp->gp_req_activity = jiffies;
|
||||||
trace_rcu_grace_period(rsp->name, READ_ONCE(rsp->gpnum),
|
trace_rcu_grace_period(rsp->name, READ_ONCE(rsp->gpnum),
|
||||||
TPS("newreq"));
|
TPS("newreq"));
|
||||||
|
} else {
|
||||||
|
WRITE_ONCE(rsp->gp_flags, rsp->gp_flags & RCU_GP_FLAG_INIT);
|
||||||
}
|
}
|
||||||
WRITE_ONCE(rsp->gp_flags, rsp->gp_flags & RCU_GP_FLAG_INIT);
|
|
||||||
raw_spin_unlock_irq_rcu_node(rnp);
|
raw_spin_unlock_irq_rcu_node(rnp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue