[PATCH] phy: HiSilicon: Fix device node reference leak in hi3670_pcie_get_resources_from_pcie()

Wentao Liang posted 1 patch 1 week ago
drivers/phy/hisilicon/phy-hi3670-pcie.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] phy: HiSilicon: Fix device node reference leak in hi3670_pcie_get_resources_from_pcie()
Posted by Wentao Liang 1 week ago
hi3670_pcie_get_resources_from_pcie() obtains the "pcie" child node
with of_get_child_by_name(), which takes a reference on the node, but
never releases it: both the "Didn't find pcie device" and the "Failed
to get APB regmap" error paths, as well as the success path, return
without calling of_node_put().

The node is only needed for the device lookup, so drop the reference
right after bus_find_device_by_of_node().

Fixes: 73075011ffff ("phy: HiSilicon: Add driver for Kirin 970 PCIe PHY")
Cc: stable@vger.kernel.org
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
---
 drivers/phy/hisilicon/phy-hi3670-pcie.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/phy/hisilicon/phy-hi3670-pcie.c b/drivers/phy/hisilicon/phy-hi3670-pcie.c
index 87eac058a4bc..35e634279794 100644
--- a/drivers/phy/hisilicon/phy-hi3670-pcie.c
+++ b/drivers/phy/hisilicon/phy-hi3670-pcie.c
@@ -570,6 +570,7 @@ static int hi3670_pcie_get_resources_from_pcie(struct hi3670_pcie_phy *phy)
 	}
 
 	pcie_dev = bus_find_device_by_of_node(&platform_bus_type, pcie_port);
+	of_node_put(pcie_port);
 	if (!pcie_dev) {
 		dev_err(dev, "Didn't find pcie device\n");
 		return -ENODEV;
-- 
2.34.1