diff options
| author | Lai Jiangshan <laijs@cn.fujitsu.com> | 2015-01-13 02:30:34 -0500 |
|---|---|---|
| committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2015-02-25 20:03:05 -0500 |
| commit | 3f47da0f32f5e43e6ae901129d5b9c2600011a2c (patch) | |
| tree | 63b3993c69978f0004ab37b957ae4e69aea6cd90 /kernel | |
| parent | ee376dbdf27728a2f3d30e2ba10fa387cc4c645b (diff) | |
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>
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/rcu/tree.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 48d640ca1a05..077d0b700f74 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -1757,8 +1757,8 @@ static int rcu_gp_init(struct rcu_state *rsp) | |||
| 1757 | rcu_preempt_check_blocked_tasks(rnp); | 1757 | rcu_preempt_check_blocked_tasks(rnp); |
| 1758 | rnp->qsmask = rnp->qsmaskinit; | 1758 | rnp->qsmask = rnp->qsmaskinit; |
| 1759 | ACCESS_ONCE(rnp->gpnum) = rsp->gpnum; | 1759 | ACCESS_ONCE(rnp->gpnum) = rsp->gpnum; |
| 1760 | WARN_ON_ONCE(rnp->completed != rsp->completed); | 1760 | if (WARN_ON_ONCE(rnp->completed != rsp->completed)) |
| 1761 | ACCESS_ONCE(rnp->completed) = rsp->completed; | 1761 | ACCESS_ONCE(rnp->completed) = rsp->completed; |
| 1762 | if (rnp == rdp->mynode) | 1762 | if (rnp == rdp->mynode) |
| 1763 | (void)__note_gp_changes(rsp, rnp, rdp); | 1763 | (void)__note_gp_changes(rsp, rnp, rdp); |
| 1764 | rcu_preempt_boost_start_gp(rnp); | 1764 | rcu_preempt_boost_start_gp(rnp); |
