From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794314001; b=YVw6khGrtJD2ZNkTjVzEn9X90UO1pU8cPLQwLOO8jJa9yoA93Ab/8UNLxKOeBFWH/3Nu vKsS5Y62hgdCcE0uyAPm1ohnNKvPjvgYcmcw47TFcfPxzc5mGFMB/oa7S2Pn3tNgzttmm 7yV973XZdwjLBetIF+R5wbEvV0ZRCMPogd9NDqbezQ7LkCZ0JyW5DGmhZa1w9ZdEbu1Ml aCsiBSAKy4kVoE4h7fbymRo4/vgz0U3OyKbnL3dIP6kUYVs5qxmDOUn4eYkZHo5tzTdbU jThQHKRQQgFhB4Byb19URL+jCG0bCULdGXWA4f1SSg5VsyVUtYgmz9UBE2tLIDzTJvg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794314001; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:MIME-Version:Content-Transfer-Encoding; bh=PQSFCk8F/tm1ykpB/kjpTNbyxDoKgsdlMcxijCRQj5Y=; b=BdLpFBhNI1ibN/La9rhauOnGofOpvQSdtBpY9vKLDsMRvmHRoSk//qL+3iiDpN2ZpyHO XsozU++hjybR84dNTBDCDaI4oOIyufo3UJJPmrZTiIUDcL/WrBzWEm/DRHKRJleqIDO6m 2hXCWhmzefY/prVyH0G/q8i/csxLCBnJ5N24Ut48DDsdSdz8otxSr1o9TInqielI3npfA jCAufuoGLNsUNiORtoY26RavkqBAydgycewSYVYTFA+/WUBha/U2xy5F7jAU3rj2QgfJ5 vuXYJ6SF0lPipdhMn9Q/lJav7YGf8UFlgXr+zjGOFkI+1Rubt5hFAYQRhRrRkSzhkVA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=YEHR0mqh; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 942E9606A31C for ; Tue, 10 Nov 2026 12:33:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.a=rsa-sha256 header.s=k20260515 header.b=YEHR0mqh Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3FBA1F0089F; Tue, 10 Nov 2026 12:33:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1794314001; bh=PQSFCk8F/tm1ykpB/kjpTNbyxDoKgsdlMcxijCRQj5Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=YEHR0mqhLqW1UYjvPVzKsNcw+TxZAtkabtTR4duBE+5WBDK6G4lN6ffsMOu3GBAyC eTPjISIgfpXLtFDMgwG9ifnDVZQA7uCvwwIKHWXXzYhbiz8tcXwxRXUvPF6croSGiv ncbqlFKp3HSFiFGRhD0NiPAG7PUObVWcxKW4GAXg053mEanHrdCu69wM/MgGqwzBY8 CXAHN5mnODYwEa6u6q2KVAtezETW6Ryc5pHo9IkRCPHeLW5AY/rAJLOiFMYHoZV1BX hNm9yIsOocaPKlY6qiH/XUoS/2yWCrhQwjlCEb4u0Q7CeVBfYPZ8Z/W7sXMLW08r7c XjIPtrDESxrrA== From: Sasha Levin To: stable@vger.kernel.org Cc: Wentao Liang , Mark Brown , Sasha Levin Subject: [PATCH 5.10.y 2/2] ASoC: codecs: wcd9335: Fix SLIM interface device leak in wcd9335_slim_status() Date: Tue, 10 Nov 2026 07:33:18 -0500 Message-ID: <20261110123310.1277074-2-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261110123310.1277074-1-sashal@kernel.org> References: <20261107061722-failed-5.10-082723fee626@kernel.org> <20261110123310.1277074-1-sashal@kernel.org> X-Mailing-List: stable@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Wentao Liang [ Upstream commit 082723fee626532f176727b6438b666a96d5246c ] of_slim_get_device() returns a device with an elevated reference count, and wcd->slim_ifc_dev is intentionally kept for the codec lifetime on success. However, all the failure paths of wcd9335_slim_status() return without dropping that reference, leaking the SLIM interface device whenever the register maps cannot be created or the codec fails to come up. Put the device on each of those error paths. Fixes: 20aedafdf492 ("ASoC: wcd9335: add support to wcd9335 codec") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang Link: https://patch.msgid.link/20260917164853.2163184-1-vulab@iscas.ac.cn Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/wcd9335.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/wcd9335.c b/sound/soc/codecs/wcd9335.c index 1f4a3407effd9..ed550dd2666ec 100644 --- a/sound/soc/codecs/wcd9335.c +++ b/sound/soc/codecs/wcd9335.c @@ -5208,25 +5208,32 @@ static int wcd9335_slim_status(struct slim_device *sdev, slim_get_logical_addr(wcd->slim_ifc_dev); wcd->regmap = regmap_init_slimbus(sdev, &wcd9335_regmap_config); - if (IS_ERR(wcd->regmap)) + if (IS_ERR(wcd->regmap)) { + put_device(&wcd->slim_ifc_dev->dev); return dev_err_probe(dev, PTR_ERR(wcd->regmap), "Failed to allocate slim register map\n"); + } wcd->if_regmap = regmap_init_slimbus(wcd->slim_ifc_dev, &wcd9335_ifc_regmap_config); - if (IS_ERR(wcd->if_regmap)) + if (IS_ERR(wcd->if_regmap)) { + put_device(&wcd->slim_ifc_dev->dev); return dev_err_probe(dev, PTR_ERR(wcd->if_regmap), "Failed to allocate ifc register map\n"); + } ret = wcd9335_bring_up(wcd); if (ret) { dev_err(dev, "Failed to bringup WCD9335\n"); + put_device(&wcd->slim_ifc_dev->dev); return ret; } ret = wcd9335_irq_init(wcd); - if (ret) + if (ret) { + put_device(&wcd->slim_ifc_dev->dev); return ret; + } wcd9335_probe(wcd); -- 2.53.0