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: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Adam Ford <aford173@gmail.com> #imx8mm-beacon-kit Acked-by: Rui Miguel Silva <rmfrfs@gmail.com> Tested-by: Martin Kepplinger <martin.kepplinger@puri.sm> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
49a82584b8
commit
2c117550d7
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user