aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutree_plugin.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/rcutree_plugin.h')
-rw-r--r--kernel/rcutree_plugin.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/rcutree_plugin.h b/kernel/rcutree_plugin.h
index b1b485111321..15d28febbbd4 100644
--- a/kernel/rcutree_plugin.h
+++ b/kernel/rcutree_plugin.h
@@ -588,10 +588,15 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
588 rnp->exp_tasks = NULL; 588 rnp->exp_tasks = NULL;
589#ifdef CONFIG_RCU_BOOST 589#ifdef CONFIG_RCU_BOOST
590 rnp->boost_tasks = NULL; 590 rnp->boost_tasks = NULL;
591 /* In case root is being boosted and leaf was not. */ 591 /*
592 * In case root is being boosted and leaf was not. Make sure
593 * that we boost the tasks blocking the current grace period
594 * in this case.
595 */
592 raw_spin_lock(&rnp_root->lock); /* irqs already disabled */ 596 raw_spin_lock(&rnp_root->lock); /* irqs already disabled */
593 if (rnp_root->boost_tasks != NULL && 597 if (rnp_root->boost_tasks != NULL &&
594 rnp_root->boost_tasks != rnp_root->gp_tasks) 598 rnp_root->boost_tasks != rnp_root->gp_tasks &&
599 rnp_root->boost_tasks != rnp_root->exp_tasks)
595 rnp_root->boost_tasks = rnp_root->gp_tasks; 600 rnp_root->boost_tasks = rnp_root->gp_tasks;
596 raw_spin_unlock(&rnp_root->lock); /* irqs still disabled */ 601 raw_spin_unlock(&rnp_root->lock); /* irqs still disabled */
597#endif /* #ifdef CONFIG_RCU_BOOST */ 602#endif /* #ifdef CONFIG_RCU_BOOST */