As the doc of of_parse_phandle() states: "The device_node pointer with refcount incremented. Use * of_node_put() on it when done." Add missing of_node_put() after of_parse_phandle() call to properly release the device node reference.
Found via static analysis.
Fixes: 1df82ec46600 ("PCI: imx: Add workaround for e10728, IMX7d PCIe PLL failure") Cc: stable@vger.kernel.org Signed-off-by: Miaoqian Lin linmq006@gmail.com --- drivers/pci/controller/dwc/pci-imx6.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 80e48746bbaf..618bc4b08a8b 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -1636,6 +1636,7 @@ static int imx_pcie_probe(struct platform_device *pdev) struct resource res;
ret = of_address_to_resource(np, 0, &res); + of_node_put(np); if (ret) { dev_err(dev, "Unable to map PCIe PHY\n"); return ret;
Add missing of_node_put() after of_parse_phandle() call to properly release the device node reference.
How do you think about to increase the application of scope-based resource management? https://elixir.bootlin.com/linux/v6.17-rc4/source/include/linux/of.h#L138
Found via static analysis.
Which concrete software tools would be involved for this purpose?
How do you think about to append parentheses to the function name in the summary phrase?
Regards, Markus
On Wed, Sep 03, 2025 at 09:51:50PM +0800, Miaoqian Lin wrote:
Subject: PCI: imx: Add missing of_node_put() to fix device node reference leak
As the doc of of_parse_phandle() states: "The device_node pointer with refcount incremented. Use
- of_node_put() on it when done."
Needn't this paragaph
Frank
Add missing of_node_put() after of_parse_phandle() call to properly release the device node reference.
Found via static analysis.
Fixes: 1df82ec46600 ("PCI: imx: Add workaround for e10728, IMX7d PCIe PLL failure") Cc: stable@vger.kernel.org Signed-off-by: Miaoqian Lin linmq006@gmail.com
drivers/pci/controller/dwc/pci-imx6.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 80e48746bbaf..618bc4b08a8b 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -1636,6 +1636,7 @@ static int imx_pcie_probe(struct platform_device *pdev) struct resource res;
ret = of_address_to_resource(np, 0, &res);
if (ret) { dev_err(dev, "Unable to map PCIe PHY\n"); return ret;of_node_put(np);
-- 2.35.1
On 03. 09. 25, 15:51, Miaoqian Lin wrote:
As the doc of of_parse_phandle() states: "The device_node pointer with refcount incremented. Use
- of_node_put() on it when done."
Add missing of_node_put() after of_parse_phandle() call to properly release the device node reference.
How did you verify the node can go after of_address_to_resource()?
Fixes: 1df82ec46600 ("PCI: imx: Add workaround for e10728, IMX7d PCIe PLL failure") Cc: stable@vger.kernel.org Signed-off-by: Miaoqian Lin linmq006@gmail.com
drivers/pci/controller/dwc/pci-imx6.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index 80e48746bbaf..618bc4b08a8b 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -1636,6 +1636,7 @@ static int imx_pcie_probe(struct platform_device *pdev) struct resource res; ret = of_address_to_resource(np, 0, &res);
of_node_put(np);
So why not to use __free(device_node)?
thanks,
linux-stable-mirror@lists.linaro.org