]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
EDAC/versalnet: Fix device_node leak in mc_probe()
authorFelix Gu <ustc.gu@gmail.com>
Sun, 22 Mar 2026 16:04:08 +0000 (00:04 +0800)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 24 Mar 2026 14:51:50 +0000 (15:51 +0100)
of_parse_phandle() returns a device_node reference that must be released with
of_node_put(). The original code never freed r5_core_node on any exit path,
causing a memory leak.

Fix this by using the automatic cleanup attribute __free(device_node) which
ensures of_node_put() is called when the variable goes out of scope.

Fixes: d5fe2fec6c40 ("EDAC: Add a driver for the AMD Versal NET DDR controller")
Signed-off-by: Felix Gu <ustc.gu@gmail.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
Cc: <stable@kernel.org>
Link: https://patch.msgid.link/20260323-versalnet-v1-1-4ab3012635ef@gmail.com
drivers/edac/versalnet_edac.c

index b87fe57aa8425a66dd35dfe96f49f0c5279cbc6c..ec13155824141da7354baa657134901a94aca7e8 100644 (file)
@@ -888,12 +888,12 @@ static void remove_versalnet(struct mc_priv *priv)
 
 static int mc_probe(struct platform_device *pdev)
 {
-       struct device_node *r5_core_node;
        struct mc_priv *priv;
        struct rproc *rp;
        int rc;
 
-       r5_core_node = of_parse_phandle(pdev->dev.of_node, "amd,rproc", 0);
+       struct device_node *r5_core_node __free(device_node) =
+               of_parse_phandle(pdev->dev.of_node, "amd,rproc", 0);
        if (!r5_core_node) {
                dev_err(&pdev->dev, "amd,rproc: invalid phandle\n");
                return -EINVAL;