]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit
rcu: Fix existing exp request check in sync_sched_exp_online_cleanup()
authorNeeraj Upadhyay <neeraju@codeaurora.org>
Wed, 18 Aug 2021 08:04:00 +0000 (13:34 +0530)
committerAndrea Righi <andrea.righi@canonical.com>
Tue, 4 Jan 2022 08:48:18 +0000 (09:48 +0100)
commit2edf15c0561b2fbbd6faf33ad310edaa63965fe9
treed50c1a13ce2094e47f36c73c8aab154ec15bf08c
parenta21ebb8d98c5e279c7acf7cca349d085bcd635ea
rcu: Fix existing exp request check in sync_sched_exp_online_cleanup()

BugLink: https://bugs.launchpad.net/bugs/1951822
[ Upstream commit f0b2b2df5423fb369ac762c77900bc7765496d58 ]

The sync_sched_exp_online_cleanup() checks to see if RCU needs
an expedited quiescent state from the incoming CPU, sending it
an IPI if so. Before sending IPI, it checks whether expedited
qs need has been already requested for the incoming CPU, by
checking rcu_data.cpu_no_qs.b.exp for the current cpu, on which
sync_sched_exp_online_cleanup() is running. This works for the
case where incoming CPU is same as self. However, for the case
where incoming CPU is different from self, expedited request
won't get marked, which can potentially delay reporting of
expedited quiescent state for the incoming CPU.

Fixes: e015a3411220 ("rcu: Avoid self-IPI in sync_sched_exp_online_cleanup()")
Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
kernel/rcu/tree_exp.h