aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWentao Liang <vulab@iscas.ac.cn>2026-09-15 06:59:33 +0000
committerNiklas Cassel <cassel@kernel.org>2026-09-16 07:22:53 +0200
commit0d1cb83337f13af082afb68b28d3fdfe29cde7fb (patch)
treeaa73bf238c7e21a5dbf4a018373ee4890b979022
parentata: libahci: clear PxCLBU and PxFBU for AHCI_HFLAG_32BIT_ONLY (diff)
ata: libahci_platform: Fix device reference leak in ahci_platform_get_resources()
of_find_device_by_node() takes a reference on the port platform device, which is only used to look up its port regulator and is never released, neither on success nor on the error paths. Drop the reference with put_device() once the regulator has been obtained, which covers both the success and error paths. Fixes: c7d7ddee7e24 ("ata: libahci: Allow using multiple regulators") Cc: stable@vger.kernel.org Signed-off-by: Wentao Liang <vulab@iscas.ac.cn> Link: https://lore.kernel.org/r/20260915065933.1733061-1-vulab@iscas.ac.cn Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Niklas Cassel <cassel@kernel.org>
-rw-r--r--drivers/ata/libahci_platform.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ata/libahci_platform.c b/drivers/ata/libahci_platform.c
index 6e072d681341..f6524135ea11 100644
--- a/drivers/ata/libahci_platform.c
+++ b/drivers/ata/libahci_platform.c
@@ -620,10 +620,10 @@ struct ahci_host_priv *ahci_platform_get_resources(struct platform_device *pdev,
of_platform_device_create(child, NULL, NULL);
port_dev = of_find_device_by_node(child);
-
if (port_dev) {
rc = ahci_platform_get_regulator(hpriv, port,
&port_dev->dev);
+ put_device(&port_dev->dev);
if (rc == -EPROBE_DEFER)
goto err_out;
}