]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: rzg3s-host: Fix device node reference leak in rzg3s_pcie_host_parse_port()
authorFelix Gu <ustc.gu@gmail.com>
Tue, 3 Feb 2026 16:46:24 +0000 (00:46 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 6 Feb 2026 22:04:01 +0000 (16:04 -0600)
In rzg3s_pcie_host_parse_port(), of_get_next_child() returns a device node
with an incremented reference count that must be released with
of_node_put(). The current code fails to call of_node_put() which causes a
reference leak.

Use the __free(device_node) attribute to ensure automatic cleanup when the
variable goes out of scope.

Fixes: 7ef502fb35b2 ("PCI: Add Renesas RZ/G3S host controller driver")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Acked-by: Manivannan Sadhasivam <mani@kernel.org>
Link: https://patch.msgid.link/20260204-rzg3s-v1-1-142bc81c3312@gmail.com
drivers/pci/controller/pcie-rzg3s-host.c

index 5aa58638903facf04009c00d4a7dd16e5611c958..2809112e6317143bfd573e703ef358bf71e853c9 100644 (file)
@@ -1142,7 +1142,8 @@ static int rzg3s_pcie_resets_prepare_and_get(struct rzg3s_pcie_host *host)
 
 static int rzg3s_pcie_host_parse_port(struct rzg3s_pcie_host *host)
 {
-       struct device_node *of_port = of_get_next_child(host->dev->of_node, NULL);
+       struct device_node *of_port __free(device_node) =
+               of_get_next_child(host->dev->of_node, NULL);
        struct rzg3s_pcie_port *port = &host->port;
        int ret;