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

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
...@@ -312,8 +312,8 @@ static int rcu_boost(void) ...@@ -312,8 +312,8 @@ static int rcu_boost(void)
rt_mutex_lock(&mtx); rt_mutex_lock(&mtx);
rt_mutex_unlock(&mtx); /* Keep lockdep happy. */ rt_mutex_unlock(&mtx); /* Keep lockdep happy. */
return rcu_preempt_ctrlblk.boost_tasks != NULL || return ACCESS_ONCE(rcu_preempt_ctrlblk.boost_tasks) != NULL ||
rcu_preempt_ctrlblk.exp_tasks != NULL; ACCESS_ONCE(rcu_preempt_ctrlblk.exp_tasks) != NULL;
} }
/* /*
......
...@@ -1232,7 +1232,8 @@ static int rcu_boost(struct rcu_node *rnp) ...@@ -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_lock(&mtx); /* Side effect: boosts task t's priority. */
rt_mutex_unlock(&mtx); /* Keep lockdep happy. */ 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;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment