On Fri, Dec 8, 2023 at 5:06 PM Frederic Weisbecker <frederic@xxxxxxxxxx> wrote: > > Under CONFIG_RCU_EXP_KTHREAD=y, the nodes initialization for expedited > grace periods is queued to a kworker. However if the allocation of that > kworker failed, the nodes initialization is performed synchronously by > the caller instead. > > Now the check for kworker initialization failure relies on the kworker > pointer to be NULL while its value might actually encapsulate an > allocation failure error. > > Make sure to handle this case. > > Fixes: 9621fbee44df ("rcu: Move expedited grace period (GP) work to RT kthread_worker") > Cc: Kalesh Singh <kaleshsingh@xxxxxxxxxx> > Signed-off-by: Frederic Weisbecker <frederic@xxxxxxxxxx> > --- > kernel/rcu/tree.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > index 82f8130d3fe3..055f4817bc70 100644 > --- a/kernel/rcu/tree.c > +++ b/kernel/rcu/tree.c > @@ -4723,6 +4723,7 @@ static void __init rcu_start_exp_gp_kworkers(void) > rcu_exp_par_gp_kworker = kthread_create_worker(0, par_gp_kworker_name); > if (IS_ERR_OR_NULL(rcu_exp_par_gp_kworker)) { > pr_err("Failed to create %s!\n", par_gp_kworker_name); > + rcu_exp_par_gp_kworker = NULL; > kthread_destroy_worker(rcu_exp_gp_kworker); Hi Frederic, Thanks for catching this. I think we need to remove the kthread_destroy_worker() in this case too. Otherwise, Reviewed-by: Kalesh Singh <kaleshsingh@xxxxxxxxxx> --Kalesh > return; > } > -- > 2.42.1 >