Commit 2c117550 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

media: imx: imx7-media-csi: Cleanup errors in imx7_csi_async_register()



It's good practice for functions to perform error cleanup internally
when they fail, in order to not leave the device in a half-initialized
state. Move the async notifier cleanup from the probe error path to the
imx7_csi_async_register(), and drop the v4l2_async_nf_unregister() call
as there is no error path after the async notifier gets registered.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tested-by: Adam Ford <aford173@gmail.com> #imx8mm-beacon-kit
Acked-by: default avatarRui Miguel Silva <rmfrfs@gmail.com>
Tested-by: default avatarMartin Kepplinger <martin.kepplinger@puri.sm>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 49a82584
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -2177,7 +2177,7 @@ static int imx7_csi_async_register(struct imx7_csi *csi)
			ret = PTR_ERR(asd);
			/* OK if asd already exists */
			if (ret != -EEXIST)
				return ret;
				goto error;
		}
	}

@@ -2185,9 +2185,13 @@ static int imx7_csi_async_register(struct imx7_csi *csi)

	ret = v4l2_async_nf_register(&csi->v4l2_dev, &csi->notifier);
	if (ret)
		return ret;
		goto error;

	return 0;

error:
	v4l2_async_nf_cleanup(&csi->notifier);
	return ret;
}

static void imx7_csi_media_cleanup(struct imx7_csi *csi)
@@ -2329,13 +2333,10 @@ static int imx7_csi_probe(struct platform_device *pdev)

	ret = imx7_csi_async_register(csi);
	if (ret)
		goto subdev_notifier_cleanup;
		goto media_cleanup;

	return 0;

subdev_notifier_cleanup:
	v4l2_async_nf_unregister(&csi->notifier);
	v4l2_async_nf_cleanup(&csi->notifier);
media_cleanup:
	imx7_csi_media_cleanup(csi);