From patchwork Tue Dec 19 14:08:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Frederic Weisbecker X-Patchwork-Id: 13498345 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02CBB1C69A; Tue, 19 Dec 2023 14:08:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="k+04tnMX" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7EC92C433C9; Tue, 19 Dec 2023 14:08:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1702994939; bh=ZjGnGBQcKOLWjk3O6+MQmOZH7Lf2D/YICIuiuNyYbfE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=k+04tnMX7lHaLk33grTKASgCQ0JPdFsQ3e3PKPR7VEV9x0G36dYtdTqvSdAJ88YFn b3HBIic3EufpEQ+fWvtPtn4FUsP983DvXrPLQk0sii9jA+z10/Xghbzg9CuZgKzp05 0cGOR2IwbavesVVOQFQAsNkHKDCoFPCSKdmnrEbc28FFIX0HZrfOY73guoM1DjL0C6 gzhibUM9AhqGwJ4rA7RI96U3HSom2TRnu3evXM2MIvgO2Pg3LGz9WMXQgdZDiFuD5+ S5N0DESOHsNhGSrfMFtYy5MXC2I6jWV6zP4flNpVaaCvPcjpj4yExqPbcP7KKE+nvt hG0BRDkYZVpMQ== From: Frederic Weisbecker To: LKML Cc: Frederic Weisbecker , Boqun Feng , Joel Fernandes , Neeraj Upadhyay , "Paul E . McKenney" , Uladzislau Rezki , Zqiang , rcu , Hillf Danton , Kalesh Singh Subject: [PATCH 3/8] rcu/exp: Fix RCU expedited parallel grace period kworker allocation failure recovery Date: Tue, 19 Dec 2023 15:08:38 +0100 Message-Id: <20231219140843.939329-4-frederic@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231219140843.939329-1-frederic@kernel.org> References: <20231219140843.939329-1-frederic@kernel.org> Precedence: bulk X-Mailing-List: rcu@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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. Reviewed-by: Kalesh Singh Fixes: 9621fbee44df ("rcu: Move expedited grace period (GP) work to RT kthread_worker") Signed-off-by: Frederic Weisbecker --- kernel/rcu/tree.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index de5796ce024f..65d730a2b492 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@ -4759,6 +4759,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); return; }