summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorNeeraj Upadhyay <neeraju@codeaurora.org>2020-06-22 23:37:03 +0530
committerPaul E. McKenney <paulmck@kernel.org>2020-08-24 18:36:06 -0700
commit9b1ce0acb5e65e9ea1e6b322562d072f9f7d1f6e (patch)
tree9d482e8ce8e7d0df0baca05fbdd569e7f26f22f3 /kernel
parent9c39245382de4d52a122641952900709d4a9950b (diff)
downloadlinux-stable-9b1ce0acb5e65e9ea1e6b322562d072f9f7d1f6e.tar.gz
linux-stable-9b1ce0acb5e65e9ea1e6b322562d072f9f7d1f6e.tar.bz2
linux-stable-9b1ce0acb5e65e9ea1e6b322562d072f9f7d1f6e.zip
rcu/tree: Remove CONFIG_PREMPT_RCU check in force_qs_rnp()
Originally, the call to rcu_preempt_blocked_readers_cgp() from force_qs_rnp() had to be conditioned on CONFIG_PREEMPT_RCU=y, as in commit a77da14ce9af ("rcu: Yet another fix for preemption and CPU hotplug"). However, there is now a CONFIG_PREEMPT_RCU=n definition of rcu_preempt_blocked_readers_cgp() that unconditionally returns zero, so invoking it is now safe. In addition, the CONFIG_PREEMPT_RCU=n definition of rcu_initiate_boost() simply releases the rcu_node structure's ->lock, which is what happens when the "if" condition evaluates to false. This commit therefore drops the IS_ENABLED(CONFIG_PREEMPT_RCU) check, so that rcu_initiate_boost() is called only in CONFIG_PREEMPT_RCU=y kernels when there are readers blocking the current grace period. This does not change the behavior, but reduces code-reader confusion by eliminating non-CONFIG_PREEMPT_RCU=y calls to rcu_initiate_boost(). Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/rcu/tree.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 4770d7709dc2..acc926f07dc1 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2533,8 +2533,7 @@ static void force_qs_rnp(int (*f)(struct rcu_data *rdp))
raw_spin_lock_irqsave_rcu_node(rnp, flags);
rcu_state.cbovldnext |= !!rnp->cbovldmask;
if (rnp->qsmask == 0) {
- if (!IS_ENABLED(CONFIG_PREEMPT_RCU) ||
- rcu_preempt_blocked_readers_cgp(rnp)) {
+ if (rcu_preempt_blocked_readers_cgp(rnp)) {
/*
* No point in scanning bits because they
* are all zero. But we might need to