PCI: mediatek: Add missing of_node_put() to fix reference leak
PATCH 1/1 PCI: mediatek: Add missing of_node_put() to fix reference leak
The for_each_available_child_of_node helper internally makes use of the of_get_next_available_child() which performs an of_node_get() on each iteration when searching for next available child node.
Should an available child node be found, then it would return a device node pointer with reference count incremented, thus early return from the middle of the loop requires an explicit of_node_put() to prevent reference count leak.
To stop the reference leak, explicitly call of_node_put() before returning after an error occurred.
--- drivers/pci/controller/pcie-mediatek.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
drivers/pci/controller/pcie-mediatek.c +5 -2
@@ -1035,14 +1035,14 @@ static int mtk_pcie_setup(struct mtk_pcie *pcie) err =of_pci_get_devfn (child);if (err <0 ) {dev_err (dev,"failed to parse devfn: %d\n" , err); -return err; + goto error_put_node; } slot =PCI_SLOT (err); err =mtk_pcie_parse_port (pcie, child, slot);if (err) -return err; + goto error_put_node; } err =mtk_pcie_subsys_powerup (pcie);
@@ -1058,6 +1058,9 @@ static int mtk_pcie_setup(struct mtk_pcie *pcie)mtk_pcie_subsys_powerdown (pcie);return 0 ; +error_put_node: +of_node_put (child); +return err; }static int mtk_pcie_probe (struct platform_device *pdev)
Signature · 7 lines
2.30.0 _______________________________________________ Linux-mediatek mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-mediatek
Lorenzo Pieralisi
AppliedQuoted 10 lines · Krzysztof Wilczyński
The
for_each_available_child_of_nodehelper internally makes use of theof_get_next_available_child()which performs anof_node_get()on each iteration when searching for next available child node.Should an available child node be found, then it would return a device node pointer with reference count incremented, thus early return from the middle of the loop requires an explicit
of_node_put()to prevent reference count leak.[...]
Applied to pci/mediatek, thanks!
[1/1] PCI: mediatek: Add missing of_node_put() to fix reference leak
https://git.kernel.org/lpieralisi/pci/c/42814c438a
Thanks,
Lorenzo
_______________________________________________
Linux-mediatek mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-mediatek