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? Thanks wordsmithing, I think it's ok. Thanks, Zqiang > > 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; > }