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: 180963 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:24d3:b0:fb:cd0c:d3e with SMTP id r19csp1962310dyi; Tue, 19 Dec 2023 06:09:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IHipShuKOaNSW+8pydV2hw+ZoMoyAtwVf34n55JEB2sK349qMfNbOCX+zZAFteCPzwKgf2g X-Received: by 2002:aa7:d957:0:b0:54c:4837:a667 with SMTP id l23-20020aa7d957000000b0054c4837a667mr8647968eds.84.1702994990590; Tue, 19 Dec 2023 06:09:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1702994990; cv=none; d=google.com; s=arc-20160816; b=q8jauEk6g9LavAVoon4EO1T0+0TVplPP+tlhkibAAPbJojU4Bls+AhFq0NkG4SAMj/ RA1QXMG2Q6u5t3Sxl0scneVqtjKiQFX5NRdKOQ0J3HnPHRuDa+2nwGboZbUWQV5eHkCH JZdVPI1nl9lRizNJzDUWNZle5kByHtxyFRYSLrrUtkWgBtg6ADIDwVz+BSXqA9/qMlt2 OmoRZwuR7+luCmnxmLhPYhpexepah9ugyfxQx0fBp5icHW+zzELjuV+uSPOWI8VyHohO c7Qw4RWfq3Ae/nL4VZI+P8ElEe8hc/Pg/rOYkNFfO87dLpAtII8T2vYY9jk/SN/ZuOhj VcdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=uVYkUohUDxVbCw/XtcZqh+4zFs+09YJVxKTPkZJBN6Q=; fh=PrlEKNcSyrUWK/QWlVe61cxdCoBFtbSXtupyPuUCqOU=; b=J/JQEy2TZw2BAfGi05S9mP0AyBzO8BM9YR1FIs6MCdlD3PVAnrExkdlVOv1J28Yzrb L1dlje3GY1GpVCVrTL2PirWWs7VEsgwtymiGxR4jMDn5L4IDGQC2Nfzp2VEqs0ruli+S 5Ib4zCJoGlYovlX1SVhwXlMoh0ihPOt/zsSCTEakBykO1r05Us6LCTIoyEvc3dMFjn3r 59Rz/RRhAFkXPigrsVvnwkE32WEyhG4Q0cDXY2QRYz86Cbb1n10WvK89nMG+wRsIHFLL ig1RpKgBl527Z4yLlrdKIzWE4AE3h9Kjht3h8+9CW2vDJvfIeHmORcabz4Lf7881OhpL 3svg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=k+04tnMX; spf=pass (google.com: domain of linux-kernel+bounces-5322-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-5322-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id c66-20020a509fc8000000b00553044cd2f7si3071764edf.451.2023.12.19.06.09.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Dec 2023 06:09:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-5322-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=k+04tnMX; spf=pass (google.com: domain of linux-kernel+bounces-5322-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-5322-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 152681F25001 for ; Tue, 19 Dec 2023 14:09:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BCCED1CAB1; Tue, 19 Dec 2023 14:09:02 +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" X-Original-To: linux-kernel@vger.kernel.org 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) 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: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785719674941178309 X-GMAIL-MSGID: 1785719674941178309 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; }