]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
remoteproc: imx_rproc: Fix refcount leak in imx_rproc_addr_init
authorMiaoqian Lin <linmq006@gmail.com>
Thu, 12 May 2022 04:55:58 +0000 (08:55 +0400)
committerStefan Bader <stefan.bader@canonical.com>
Mon, 17 Oct 2022 09:56:49 +0000 (11:56 +0200)
BugLink: https://bugs.launchpad.net/bugs/1990162
[ Upstream commit 61afafe8b938bc74841cf4b1a73dd08b9d287c5a ]

of_parse_phandle() returns a node pointer with refcount
incremented, we should use of_node_put() on it when not needed anymore.
This function has two paths missing of_node_put().

Fixes: 6e962bfe56b9 ("remoteproc: imx_rproc: add missing of_node_put")
Fixes: a0ff4aa6f010 ("remoteproc: imx_rproc: add a NXP/Freescale imx_rproc driver")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Link: https://lore.kernel.org/r/20220512045558.7142-1-linmq006@gmail.com
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
drivers/remoteproc/imx_rproc.c

index 59eae605ad59f3cc84744fc8decae52fe6b53c67..e8a170ad43c1df82590ee8b8e4edecc922787ff3 100644 (file)
@@ -586,16 +586,17 @@ static int imx_rproc_addr_init(struct imx_rproc *priv,
 
                node = of_parse_phandle(np, "memory-region", a);
                /* Not map vdevbuffer, vdevring region */
-               if (!strncmp(node->name, "vdev", strlen("vdev")))
+               if (!strncmp(node->name, "vdev", strlen("vdev"))) {
+                       of_node_put(node);
                        continue;
+               }
                err = of_address_to_resource(node, 0, &res);
+               of_node_put(node);
                if (err) {
                        dev_err(dev, "unable to resolve memory region\n");
                        return err;
                }
 
-               of_node_put(node);
-
                if (b >= IMX_RPROC_MEM_MAX)
                        break;