Commit 96050c68 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcu: Upgrade sync_exp_work_done() to smp_mb()



The sync_exp_work_done() function uses smp_mb__before_atomic(), but
there is no obvious atomic in the ensuing code.  The ordering is
absolutely required for grace periods to work correctly, so this
commit upgrades the smp_mb__before_atomic() to smp_mb().

Fixes: 6fba2b37 ("rcu: Remove deprecated RCU debugfs tracing code")
Reported-by: default avatarAndrea Parri <andrea.parri@amarulasolutions.com>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.ibm.com>
parent 714b6904
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -259,8 +259,7 @@ static bool sync_exp_work_done(unsigned long s)
{
	if (rcu_exp_gp_seq_done(s)) {
		trace_rcu_exp_grace_period(rcu_state.name, s, TPS("done"));
		/* Ensure test happens before caller kfree(). */
		smp_mb__before_atomic(); /* ^^^ */
		smp_mb(); /* Ensure test happens before caller kfree(). */
		return true;
	}
	return false;