|
@@ -907,6 +907,12 @@ static void rcu_report_qs_rsp(struct rcu_state *rsp, unsigned long flags)
|
|
|
unsigned long gp_duration;
|
|
|
|
|
|
WARN_ON_ONCE(!rcu_gp_in_progress(rsp));
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Ensure that all grace-period and pre-grace-period activity
|
|
|
+ * is seen before the assignment to rsp->completed.
|
|
|
+ */
|
|
|
+ smp_mb(); /* See above block comment. */
|
|
|
gp_duration = jiffies - rsp->gp_start;
|
|
|
if (gp_duration > rsp->gp_max)
|
|
|
rsp->gp_max = gp_duration;
|