rcu: Check for successful spawn of ->boost_kthread_task
authorZqiang <qiang1.zhang@intel.com>
Thu, 24 Mar 2022 11:15:15 +0000 (19:15 +0800)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 20 Apr 2022 23:51:11 +0000 (16:51 -0700)
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@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree_plugin.h

index 176639c6215fb5cd79d76616f415f1dfc03a6fa1..5c23aceecd62d2b311199c56c959d9348880918c 100644 (file)
@@ -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;
        }