]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
rcu: handle unstable rdp in rcu_read_unlock_strict()
authorAnkur Arora <ankur.a.arora@oracle.com>
Fri, 13 Dec 2024 04:06:55 +0000 (20:06 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Jun 2025 12:40:16 +0000 (14:40 +0200)
commite2df1936c126eb87033cbe4a60bc2786d9c06aa8
treefacda55b41a512b6c6593bf250d27115877ced95
parent6090e604285f214ba707cbbd4149567d6206e720
rcu: handle unstable rdp in rcu_read_unlock_strict()

[ Upstream commit fcf0e25ad4c8d14d2faab4d9a17040f31efce205 ]

rcu_read_unlock_strict() can be called with preemption enabled
which can make for an unstable rdp and a racy norm value.

Fix this by dropping the preempt-count in __rcu_read_unlock()
after the call to rcu_read_unlock_strict(), adjusting the
preempt-count check appropriately.

Suggested-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com>
Reviewed-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/linux/rcupdate.h
kernel/rcu/tree_plugin.h