]> git.itanic.dy.fi Git - linux-stable/commitdiff
dmaengine: ti: k3-udma-private: Fix refcount leak bug in of_xudma_dev_get()
authorLiang He <windhl@126.com>
Wed, 20 Jul 2022 07:32:34 +0000 (15:32 +0800)
committerVinod Koul <vkoul@kernel.org>
Mon, 5 Sep 2022 06:23:46 +0000 (11:53 +0530)
We should call of_node_put() for the reference returned by
of_parse_phandle() in fail path or when it is not used anymore.
Here we only need to move the of_node_put() before the check.

Fixes: d70241913413 ("dmaengine: ti: k3-udma: Add glue layer for non DMAengine users")
Signed-off-by: Liang He <windhl@126.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Link: https://lore.kernel.org/r/20220720073234.1255474-1-windhl@126.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/ti/k3-udma-private.c

index d4f1e4e9603a400308e514350a2f3ec330c9cbaf..85e00701473cb121ab668c97a2b5c875e082615a 100644 (file)
@@ -31,14 +31,14 @@ struct udma_dev *of_xudma_dev_get(struct device_node *np, const char *property)
        }
 
        pdev = of_find_device_by_node(udma_node);
+       if (np != udma_node)
+               of_node_put(udma_node);
+
        if (!pdev) {
                pr_debug("UDMA device not found\n");
                return ERR_PTR(-EPROBE_DEFER);
        }
 
-       if (np != udma_node)
-               of_node_put(udma_node);
-
        ud = platform_get_drvdata(pdev);
        if (!ud) {
                pr_debug("UDMA has not been probed\n");