]> git.baikalelectronics.ru Git - 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)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Wed, 22 Jun 2022 16:44:49 +0000 (10:44 -0600)
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>
drivers/remoteproc/imx_rproc.c

index 4a3352821b1dac77ac5658f4d931c33aef282c9a..38383e7de3c1e7861535ef4b053b77b65a845af2 100644 (file)
@@ -594,16 +594,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;