[PATCH] PCI: imx: fix device node reference leak in imx_pcie_probe

Miaoqian Lin posted 1 patch 4 weeks, 1 day ago
drivers/pci/controller/dwc/pci-imx6.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] PCI: imx: fix device node reference leak in imx_pcie_probe
Posted by Miaoqian Lin 4 weeks, 1 day ago
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;
-- 
2.35.1
Re: [PATCH] PCI: imx: fix device node reference leak in imx_pcie_probe
Posted by Jiri Slaby 3 weeks, 6 days ago
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,
-- 
js
suse labs
Re: [PATCH] PCI: imx: fix device node reference leak in imx_pcie_probe
Posted by Frank Li 4 weeks, 1 day ago
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);
> +		of_node_put(np);
>  		if (ret) {
>  			dev_err(dev, "Unable to map PCIe PHY\n");
>  			return ret;
> --
> 2.35.1
>
Re: [PATCH] PCI: imx: fix device node reference leak in imx_pcie_probe
Posted by Markus Elfring 4 weeks, 1 day ago
> 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