]> www.infradead.org Git - users/dwmw2/linux.git/commit
rcu: Fix preemption mode check on synchronize_rcu[_expedited]()
authorFrederic Weisbecker <frederic@kernel.org>
Mon, 14 Mar 2022 13:37:38 +0000 (14:37 +0100)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 20 Apr 2022 23:51:11 +0000 (16:51 -0700)
commit70ae7b0ce03347fab35d6d8df81e1165d7ea8045
treed8e176e3a2de6d7eed80527af6bac59de704d751
parent80d530b47da41642fab317a9485d58dfbe1e8896
rcu: Fix preemption mode check on synchronize_rcu[_expedited]()

An early check on synchronize_rcu[_expedited]() tries to determine if
the current CPU is in UP mode on an SMP no-preempt kernel, in which case
there is no need to start a grace period since the current assumed
quiescent state is all we need.

However the preemption mode doesn't take into account the boot selected
preemption mode under CONFIG_PREEMPT_DYNAMIC=y, missing a possible
early return if the running flavour is "none" or "voluntary".

Use the shiny new preempt mode accessors to fix this.  However,
avoid invoking them during early boot because doing so triggers a
WARN_ON_ONCE().

[ paulmck: Update for mainlined API. ]

Reported-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Cc: Uladzislau Rezki <uladzislau.rezki@sony.com>
Cc: Joel Fernandes <joel@joelfernandes.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Neeraj Upadhyay <quic_neeraju@quicinc.com>
Cc: Valentin Schneider <valentin.schneider@arm.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree.c