remoteproc: rcar_rproc: Call of_node_put() on iteration error
authorMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 20 Mar 2023 22:18:24 +0000 (16:18 -0600)
committerMathieu Poirier <mathieu.poirier@linaro.org>
Mon, 3 Apr 2023 16:50:47 +0000 (10:50 -0600)
Function of_phandle_iterator_next() calls of_node_put() on the last
device_node it iterated over, but when the loop exits prematurely it has
to be called explicitly.

Fixes: 285892a74f13 ("remoteproc: Add Renesas rcar driver")
Cc: stable@vger.kernel.org
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
Link: https://lore.kernel.org/r/20230320221826.2728078-4-mathieu.poirier@linaro.org
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
drivers/remoteproc/rcar_rproc.c

index aa86154..1ff2a73 100644 (file)
@@ -62,13 +62,16 @@ static int rcar_rproc_prepare(struct rproc *rproc)
 
                rmem = of_reserved_mem_lookup(it.node);
                if (!rmem) {
+                       of_node_put(it.node);
                        dev_err(&rproc->dev,
                                "unable to acquire memory-region\n");
                        return -EINVAL;
                }
 
-               if (rmem->base > U32_MAX)
+               if (rmem->base > U32_MAX) {
+                       of_node_put(it.node);
                        return -EINVAL;
+               }
 
                /* No need to translate pa to da, R-Car use same map */
                da = rmem->base;
@@ -79,8 +82,10 @@ static int rcar_rproc_prepare(struct rproc *rproc)
                                           rcar_rproc_mem_release,
                                           it.node->name);
 
-               if (!mem)
+               if (!mem) {
+                       of_node_put(it.node);
                        return -ENOMEM;
+               }
 
                rproc_add_carveout(rproc, mem);
        }