]> git.baikalelectronics.ru Git - kernel.git/commit
rcu: Use *_ONCE() to protect lockless ->expmask accesses
authorPaul E. McKenney <paulmck@kernel.org>
Tue, 8 Oct 2019 01:53:18 +0000 (18:53 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 9 Dec 2019 20:24:56 +0000 (12:24 -0800)
commit0db493bdd8fed80a4c38735d054c2ba47ab7a971
treea974bdc151ac35db62b8b5bf9c5fff7a05a7a190
parent47599c6298943ede4662b5e31dfe375feac1b48a
rcu: Use *_ONCE() to protect lockless ->expmask accesses

The rcu_node structure's ->expmask field is accessed locklessly when
starting a new expedited grace period and when reporting an expedited
RCU CPU stall warning.  This commit therefore handles the former by
taking a snapshot of ->expmask while the lock is held and the latter
by applying READ_ONCE() to lockless reads and WRITE_ONCE() to the
corresponding updates.

Link: https://lore.kernel.org/lkml/CANpmjNNmSOagbTpffHr4=Yedckx9Rm2NuGqC9UqE+AOz5f1-ZQ@mail.gmail.com
Reported-by: syzbot+134336b86f728d6e55a0@syzkaller.appspotmail.com
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Acked-by: Marco Elver <elver@google.com>
kernel/rcu/tree_exp.h