rcu_tree: Avoid touching rnp->completed when a new GP is started
In rcu_gp_init(), rnp->completed equals to rsp->completed in THEORY, we don't need to touch it normally. If something goes wrong, it will complain and fixup rnp->completed and avoid oops. This commit thus avoids the normal needless store to rnp->completed. Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
This commit is contained in:
parent
ee376dbdf2
commit
3f47da0f32
@ -1757,8 +1757,8 @@ static int rcu_gp_init(struct rcu_state *rsp)
|
|||||||
rcu_preempt_check_blocked_tasks(rnp);
|
rcu_preempt_check_blocked_tasks(rnp);
|
||||||
rnp->qsmask = rnp->qsmaskinit;
|
rnp->qsmask = rnp->qsmaskinit;
|
||||||
ACCESS_ONCE(rnp->gpnum) = rsp->gpnum;
|
ACCESS_ONCE(rnp->gpnum) = rsp->gpnum;
|
||||||
WARN_ON_ONCE(rnp->completed != rsp->completed);
|
if (WARN_ON_ONCE(rnp->completed != rsp->completed))
|
||||||
ACCESS_ONCE(rnp->completed) = rsp->completed;
|
ACCESS_ONCE(rnp->completed) = rsp->completed;
|
||||||
if (rnp == rdp->mynode)
|
if (rnp == rdp->mynode)
|
||||||
(void)__note_gp_changes(rsp, rnp, rdp);
|
(void)__note_gp_changes(rsp, rnp, rdp);
|
||||||
rcu_preempt_boost_start_gp(rnp);
|
rcu_preempt_boost_start_gp(rnp);
|
||||||
|
Loading…
Reference in New Issue
Block a user