On Thu, Mar 24, 2022 at 07:15:15PM +0800, Zqiang wrote: > The boost kthreads may spawn failed, although the probability of > creation failure is very low, in consideration of the robustness > of the code, add boost_kthread_task pointer detection. > > Signed-off-by: Zqiang <qiang1.zhang@xxxxxxxxx> Good catch! As you say, rare, but definitely worth fixing. I could not resist a bit of wordsmithing. Could you please check to see if I messed something up? Thanx, Paul ------------------------------------------------------------------------ commit ad3c438e248cbc41fe30a41287621c3dbfcdf51c Author: Zqiang <qiang1.zhang@xxxxxxxxx> Date: Thu Mar 24 19:15:15 2022 +0800 rcu: Check for successful spawn of ->boost_kthread_task For the spawning of the priority-boost kthreads can fail, improbable though this might seem. This commit therefore refrains from attemoting to initiate RCU priority boosting when The ->boost_kthread_task pointer is NULL. Signed-off-by: Zqiang <qiang1.zhang@xxxxxxxxx> Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx> diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 6b9bcd45c7b2..d58f6d6073bf 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h @@ -1125,7 +1125,8 @@ static void rcu_initiate_boost(struct rcu_node *rnp, unsigned long flags) __releases(rnp->lock) { raw_lockdep_assert_held_rcu_node(rnp); - if (!rcu_preempt_blocked_readers_cgp(rnp) && rnp->exp_tasks == NULL) { + if (!rnp->boost_kthread_task || + (!rcu_preempt_blocked_readers_cgp(rnp) && !rnp->exp_tasks)) { raw_spin_unlock_irqrestore_rcu_node(rnp, flags); return; }