diff options
-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) | |||
3299 | static void rcu_exp_gp_seq_end(struct rcu_state *rsp) | 3299 | static void rcu_exp_gp_seq_end(struct rcu_state *rsp) |
3300 | { | 3300 | { |
3301 | rcu_seq_end(&rsp->expedited_sequence); | 3301 | rcu_seq_end(&rsp->expedited_sequence); |
3302 | smp_mb(); /* Ensure that consecutive grace periods serialize. */ | ||
3302 | } | 3303 | } |
3303 | static unsigned long rcu_exp_gp_seq_snap(struct rcu_state *rsp) | 3304 | static unsigned long rcu_exp_gp_seq_snap(struct rcu_state *rsp) |
3304 | { | 3305 | { |
@@ -3431,7 +3432,6 @@ void synchronize_sched_expedited(void) | |||
3431 | 3432 | ||
3432 | rcu_exp_gp_seq_end(rsp); | 3433 | rcu_exp_gp_seq_end(rsp); |
3433 | mutex_unlock(&rnp->exp_funnel_mutex); | 3434 | mutex_unlock(&rnp->exp_funnel_mutex); |
3434 | smp_mb(); /* ensure subsequent action seen after grace period. */ | ||
3435 | 3435 | ||
3436 | put_online_cpus(); | 3436 | put_online_cpus(); |
3437 | } | 3437 | } |
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) | |||
735 | /* Clean up and exit. */ | 735 | /* Clean up and exit. */ |
736 | rcu_exp_gp_seq_end(rsp); | 736 | rcu_exp_gp_seq_end(rsp); |
737 | mutex_unlock(&rnp_unlock->exp_funnel_mutex); | 737 | mutex_unlock(&rnp_unlock->exp_funnel_mutex); |
738 | smp_mb(); /* ensure subsequent action seen after grace period. */ | ||
739 | } | 738 | } |
740 | EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); | 739 | EXPORT_SYMBOL_GPL(synchronize_rcu_expedited); |
741 | 740 | ||