Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4f89b336 authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Paul E. McKenney
Browse files

rcu: Apply ACCESS_ONCE() to rcu_boost() return value



Both TINY_RCU's and TREE_RCU's implementations of rcu_boost() access
the ->boost_tasks and ->exp_tasks fields without preventing concurrent
changes to these fields.  This commit therefore applies ACCESS_ONCE in
order to prevent compiler mischief.

Signed-off-by: default avatarPaul E. McKenney <paul.mckenney@linaro.org>
Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 70321d44
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -312,8 +312,8 @@ static int rcu_boost(void)
	rt_mutex_lock(&mtx);
	rt_mutex_unlock(&mtx);  /* Keep lockdep happy. */

	return rcu_preempt_ctrlblk.boost_tasks != NULL ||
	       rcu_preempt_ctrlblk.exp_tasks != NULL;
	return ACCESS_ONCE(rcu_preempt_ctrlblk.boost_tasks) != NULL ||
	       ACCESS_ONCE(rcu_preempt_ctrlblk.exp_tasks) != NULL;
}

/*
+2 −1
Original line number Diff line number Diff line
@@ -1232,7 +1232,8 @@ static int rcu_boost(struct rcu_node *rnp)
	rt_mutex_lock(&mtx);  /* Side effect: boosts task t's priority. */
	rt_mutex_unlock(&mtx);  /* Keep lockdep happy. */

	return rnp->exp_tasks != NULL || rnp->boost_tasks != NULL;
	return ACCESS_ONCE(rnp->exp_tasks) != NULL ||
	       ACCESS_ONCE(rnp->boost_tasks) != NULL;
}

/*