From nobody Fri Dec 19 18:59:56 2025 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 A5F481A9F85 for ; Thu, 4 Dec 2025 19:39:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764877198; cv=none; b=sfFy4AsrgIdCSYbL6plUvcdPIDRDqcnI+NsBvas5D8L80RR4PccM4Kk1iBt9o2RMsV7aQwbrEe5uAE8sXcH506KF++SWl93H1O9foy94Ho8r5w+pSWs0W1gRJOzh+5TACVADOm5y7B9Z0gVXstcUz1PqNztAtNBwnnz9MXk22SE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764877198; c=relaxed/simple; bh=jx/o5hZQ9mHrXWA1SDMfslWsFLh3ZZFNU7H9vPkUBu4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=WirxytEcshppWY91c9ErSWC6e1CerfEw92oUQRxM71wv2AMwxoJHxMbWw81Ya6DFt31fRx9/hcGlzfWzmZstk/L6BJ8sXA4zugcKLdJPJe3LK0A+9gJE0/Dw0vCrFWKiyoxegGbf9dtoiMPxn0bIJ2xGJz4UUldJ3yTR0FraH6I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QiqGk96c; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QiqGk96c" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A0C8C4CEFB; Thu, 4 Dec 2025 19:39:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1764877198; bh=jx/o5hZQ9mHrXWA1SDMfslWsFLh3ZZFNU7H9vPkUBu4=; h=From:Date:Subject:To:Cc:From; b=QiqGk96cUJa7AOkzGZBO9amEt+EJhfApIMxDO/gnrjOPfDHdLUM/1tCvwXGGxskqL 7PdJNSOKhlRVIQ0JlkVErS2aHTCivSTsCNNataJehM7tDoyJgbRM5axollkgjJYGX4 iSa9belfwxmuf2Cux9PRo8l+hCYWl3isU/R4OgxhvqdL6Mrnbs6IO6VfdwU4BYcOKM wMC1vKLF0SIUxdm0R3Ci8HTHSYwVHsdAC6mRl1XZtUJcWgc7JpdY+sf7gbjByVYsTS YDGeV5f8eIY6OjsDjj0ZcJNExUZw7xkla1C5jNlaCRVCD+nRIqepZ3W8N+8lRJwjKp yEhIuVrFSLxZg== From: Mark Brown Date: Thu, 04 Dec 2025 19:39:34 +0000 Subject: [PATCH] regulator: fixed: Rely on the core freeing the enable GPIO Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251204-regulator-fixed-fix-gpiod-leak-v1-1-48efea5b82c2@kernel.org> X-B4-Tracking: v=1; b=H4sIAHXjMWkC/xWN0QqEIBBFfyXmuQG1DaRfWfbBcnSHImOsCKJ/T 18OHDjce0MmYcowNDcInZw5rUV028D0d2skZF8cjDK9NuqDQvFY3J4EA1/kKzFunDwu5GYcdeh VGO3UWQtlZBOqXT34/p7nBVb2YwxwAAAA X-Change-ID: 20251204-regulator-fixed-fix-gpiod-leak-b1f50fb8c388 To: Liam Girdwood , Diederik de Haas Cc: Haotian Zhang , linux-kernel@vger.kernel.org, Mark Brown X-Mailer: b4 0.15-dev-88d78 X-Developer-Signature: v=1; a=openpgp-sha256; l=1638; i=broonie@kernel.org; h=from:subject:message-id; bh=jx/o5hZQ9mHrXWA1SDMfslWsFLh3ZZFNU7H9vPkUBu4=; b=owEBbQGS/pANAwAKASTWi3JdVIfQAcsmYgBpMeOMLHs6qaH8tU0ccbzcwcehcwfkHIq95mIhS iZQ33kYkT6JATMEAAEKAB0WIQSt5miqZ1cYtZ/in+ok1otyXVSH0AUCaTHjjAAKCRAk1otyXVSH 0KQhB/0ebhjIYMf/PoES/yn7/HaSh/zqNI13S2IjU/qsUuPEIHecZlNT/RdCOVRkhXyYNnZHdpZ 1Aq6Hse70/K/DaPF6DaIEj6s12W8a9S8ijByYCOQ3jSAjS/m0rimEQbHtonOfkaWOVd6PTwHG5C PzRDL7ZB9R8PrWVZs83jWV6ypHRNsPqGjOLGznSUXRoPtnDlLDdYLfMot+mqMxFLBumumqb26j9 K1IiN6AIhzapCu/7djJ4l0QrySoo2zTKZl2Xl/ykeF3+liQUDUTNO0VGWl86UMuDoVmP/3Lm9qB IpSxZM9qpS8jEcqS/QxfpfaKcljqk2K6/wgYpFKuomQ8U7QK X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB In order to simplify ownership rules for enable GPIOs supplied by drivers regulator_register() always takes ownership of them, even if it ends up failing for some other reason. We therefore should not free the GPIO if registration fails but just let the core worry about things. Fixes: 636f4618b1cd (regulator: fixed: fix GPIO descriptor leak on register= failure) Reported-by: Diederik de Haas Closes: https://lore.kernel.org/r/DEPEYUF5BRGY.UKFBWRRE8HNP@cknow-tech.com Signed-off-by: Mark Brown Tested-by: Diederik de Haas --- drivers/regulator/fixed.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/drivers/regulator/fixed.c b/drivers/regulator/fixed.c index a2d16e9abfb5..254c0a8a4555 100644 --- a/drivers/regulator/fixed.c +++ b/drivers/regulator/fixed.c @@ -330,13 +330,10 @@ static int reg_fixed_voltage_probe(struct platform_de= vice *pdev) =20 drvdata->dev =3D devm_regulator_register(&pdev->dev, &drvdata->desc, &cfg); - if (IS_ERR(drvdata->dev)) { - ret =3D dev_err_probe(&pdev->dev, PTR_ERR(drvdata->dev), - "Failed to register regulator: %ld\n", - PTR_ERR(drvdata->dev)); - gpiod_put(cfg.ena_gpiod); - return ret; - } + if (IS_ERR(drvdata->dev)) + return dev_err_probe(&pdev->dev, PTR_ERR(drvdata->dev), + "Failed to register regulator: %ld\n", + PTR_ERR(drvdata->dev)); =20 platform_set_drvdata(pdev, drvdata); =20 --- base-commit: 81d431130ae1af4e64030f6a956ee9137e6fc1b0 change-id: 20251204-regulator-fixed-fix-gpiod-leak-b1f50fb8c388 Best regards, -- =20 Mark Brown