|
@@ -584,8 +584,11 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
|
|
raw_spin_unlock(&rnp_root->lock); /* irqs still disabled */
|
|
raw_spin_unlock(&rnp_root->lock); /* irqs still disabled */
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ rnp->gp_tasks = NULL;
|
|
|
|
+ rnp->exp_tasks = NULL;
|
|
#ifdef CONFIG_RCU_BOOST
|
|
#ifdef CONFIG_RCU_BOOST
|
|
- /* In case root is being boosted and leaf is not. */
|
|
|
|
|
|
+ rnp->boost_tasks = NULL;
|
|
|
|
+ /* In case root is being boosted and leaf was not. */
|
|
raw_spin_lock(&rnp_root->lock); /* irqs already disabled */
|
|
raw_spin_lock(&rnp_root->lock); /* irqs already disabled */
|
|
if (rnp_root->boost_tasks != NULL &&
|
|
if (rnp_root->boost_tasks != NULL &&
|
|
rnp_root->boost_tasks != rnp_root->gp_tasks)
|
|
rnp_root->boost_tasks != rnp_root->gp_tasks)
|
|
@@ -593,8 +596,6 @@ static int rcu_preempt_offline_tasks(struct rcu_state *rsp,
|
|
raw_spin_unlock(&rnp_root->lock); /* irqs still disabled */
|
|
raw_spin_unlock(&rnp_root->lock); /* irqs still disabled */
|
|
#endif /* #ifdef CONFIG_RCU_BOOST */
|
|
#endif /* #ifdef CONFIG_RCU_BOOST */
|
|
|
|
|
|
- rnp->gp_tasks = NULL;
|
|
|
|
- rnp->exp_tasks = NULL;
|
|
|
|
return retval;
|
|
return retval;
|
|
}
|
|
}
|
|
|
|
|