Re: [PATCH] staging: media: imx: fix OF node leak in imx_media_add_of_subdevs()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/24/24 05:54, Joe Hattori wrote:
imx_media_add_of_subdevs() calls of_parse_phandle() and passes the
obtained node to imx_media_of_add_csi(). The passed node is used in
v4l2_async_nf_add_fwnode(), which increments the refcount of the node.
Therefore, while the current implementation only releases the node when
imx_media_of_add_csi() fails, but should always release it. Call
of_node_put() right after imx_media_of_add_csi().

Fixes: dee747f88167 ("media: imx: Don't register IPU subdevs/links if CSI port missing")
Signed-off-by: Joe Hattori <joe@xxxxxxxxxxxxxxxxxxxxx>
---
  drivers/staging/media/imx/imx-media-of.c | 8 ++------
  1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/media/imx/imx-media-of.c b/drivers/staging/media/imx/imx-media-of.c
index 118bff988bc7..bb28daa4d713 100644
--- a/drivers/staging/media/imx/imx-media-of.c
+++ b/drivers/staging/media/imx/imx-media-of.c
@@ -54,22 +54,18 @@ int imx_media_add_of_subdevs(struct imx_media_dev *imxmd,
  			break;
ret = imx_media_of_add_csi(imxmd, csi_np);
+		of_node_put(csi_np);
  		if (ret) {
  			/* unavailable or already added is not an error */
  			if (ret == -ENODEV || ret == -EEXIST) {
-				of_node_put(csi_np);
  				continue;
  			}
/* other error, can't continue */
-			goto err_out;
+			return ret;
  		}
  	}
return 0;
-
-err_out:
-	of_node_put(csi_np);
-	return ret;
  }
  EXPORT_SYMBOL_GPL(imx_media_add_of_subdevs);

Reviewed-by: Vladimir Zapolskiy <vladimir.zapolskiy@xxxxxxxxxx>

--
Best wishes,
Vladimir




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux