diff options
Diffstat (limited to 'kernel/rcu')
| -rw-r--r-- | kernel/rcu/tree.c | 2 | ||||
| -rw-r--r-- | kernel/rcu/tree_plugin.h | 1 | 
2 files changed, 1 insertions, 2 deletions
| diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 44245ae4c1c2..a905d3ba8673 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -3299,6 +3299,7 @@ static void rcu_exp_gp_seq_start(struct rcu_state *rsp)  static void rcu_exp_gp_seq_end(struct rcu_state *rsp)  {  	rcu_seq_end(&rsp->expedited_sequence); +	smp_mb(); /* Ensure that consecutive grace periods serialize. */  }  static unsigned long rcu_exp_gp_seq_snap(struct rcu_state *rsp)  { @@ -3431,7 +3432,6 @@ void synchronize_sched_expedited(void)  	rcu_exp_gp_seq_end(rsp);  	mutex_unlock(&rnp->exp_funnel_mutex); -	smp_mb(); /* ensure subsequent action seen after grace period. */  	put_online_cpus();  } diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index f0d71449ec0c..27b714601c6e 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -735,7 +735,6 @@ void synchronize_rcu_expedited(void)  	/* Clean up and exit. */  	rcu_exp_gp_seq_end(rsp);  	mutex_unlock(&rnp_unlock->exp_funnel_mutex); -	smp_mb(); /* ensure subsequent action seen after grace period. */  }  EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); | 
