From: Paul E. McKenney Date: Sat, 4 Jan 2020 00:14:08 +0000 (-0800) Subject: rcu: Add READ_ONCE() to rcu_segcblist ->tails[] X-Git-Tag: v5.7-rc1~183^2^2^2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bfeebe24212d374f82bbf5b005371fe13acabb93;p=thirdparty%2Flinux.git rcu: Add READ_ONCE() to rcu_segcblist ->tails[] The rcu_segcblist structure's ->tails[] array entries are read locklessly, so this commit adds the READ_ONCE() to a load in order to avoid destructive compiler optimizations. This data race was reported by KCSAN. Signed-off-by: Paul E. McKenney --- diff --git a/kernel/rcu/rcu_segcblist.c b/kernel/rcu/rcu_segcblist.c index 5f4fd3b8777ca..426a472e73081 100644 --- a/kernel/rcu/rcu_segcblist.c +++ b/kernel/rcu/rcu_segcblist.c @@ -182,7 +182,7 @@ void rcu_segcblist_offload(struct rcu_segcblist *rsclp) bool rcu_segcblist_ready_cbs(struct rcu_segcblist *rsclp) { return rcu_segcblist_is_enabled(rsclp) && - &rsclp->head != rsclp->tails[RCU_DONE_TAIL]; + &rsclp->head != READ_ONCE(rsclp->tails[RCU_DONE_TAIL]); } /*