Message ID | 20220421234240.1694-7-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Commit | 6adceb706e51bb5ff3c2a9700a0ee275ee0c76b2 |
Headers | show |
Series | media: rkisp1: Misc bug fixes and cleanups | expand |
Laurent Pinchart wrote: > Simplify error handling at registration time as media_entity_cleanup() > can be called on an uninitialized entity, and make > rkisp1_stats_unregister() safe to be called on an unregistered stats > node to prepare for simplification of error handling at probe time. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Ricardo Ribalda <ribalda@chromium.org> > --- > drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c | 11 +++++++---- > 1 file changed, 7 insertions(+), 4 deletions(-) > > diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c > index be5777c65bfb..26ef3bbe43d0 100644 > --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c > +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c > @@ -463,21 +463,21 @@ int rkisp1_stats_register(struct rkisp1_device *rkisp1) > node->pad.flags = MEDIA_PAD_FL_SINK; > ret = media_entity_pads_init(&vdev->entity, 1, &node->pad); > if (ret) > - goto err_mutex_destroy; > + goto error; > > ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1); > if (ret) { > dev_err(&vdev->dev, > "failed to register %s, ret=%d\n", vdev->name, ret); > - goto err_cleanup_media_entity; > + goto error; > } > > return 0; > > -err_cleanup_media_entity: > +error: > media_entity_cleanup(&vdev->entity); > -err_mutex_destroy: > mutex_destroy(&node->vlock); > + stats->rkisp1 = NULL; > return ret; > } > > @@ -487,6 +487,9 @@ void rkisp1_stats_unregister(struct rkisp1_device *rkisp1) > struct rkisp1_vdev_node *node = &stats->vnode; > struct video_device *vdev = &node->vdev; > > + if (!stats->rkisp1) > + return; > + > vb2_video_unregister_device(vdev); > media_entity_cleanup(&vdev->entity); > mutex_destroy(&node->vlock); > -- > Regards, > > Laurent Pinchart > >
diff --git a/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c b/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c index be5777c65bfb..26ef3bbe43d0 100644 --- a/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c +++ b/drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c @@ -463,21 +463,21 @@ int rkisp1_stats_register(struct rkisp1_device *rkisp1) node->pad.flags = MEDIA_PAD_FL_SINK; ret = media_entity_pads_init(&vdev->entity, 1, &node->pad); if (ret) - goto err_mutex_destroy; + goto error; ret = video_register_device(vdev, VFL_TYPE_VIDEO, -1); if (ret) { dev_err(&vdev->dev, "failed to register %s, ret=%d\n", vdev->name, ret); - goto err_cleanup_media_entity; + goto error; } return 0; -err_cleanup_media_entity: +error: media_entity_cleanup(&vdev->entity); -err_mutex_destroy: mutex_destroy(&node->vlock); + stats->rkisp1 = NULL; return ret; } @@ -487,6 +487,9 @@ void rkisp1_stats_unregister(struct rkisp1_device *rkisp1) struct rkisp1_vdev_node *node = &stats->vnode; struct video_device *vdev = &node->vdev; + if (!stats->rkisp1) + return; + vb2_video_unregister_device(vdev); media_entity_cleanup(&vdev->entity); mutex_destroy(&node->vlock);
Simplify error handling at registration time as media_entity_cleanup() can be called on an uninitialized entity, and make rkisp1_stats_unregister() safe to be called on an unregistered stats node to prepare for simplification of error handling at probe time. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- drivers/media/platform/rockchip/rkisp1/rkisp1-stats.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-)