Commit 9d9104fb authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

[media] staging: media: omap4iss: Cleanup media entities after unregistration

The ipipeif, ipipe and resizer media entities are cleaned up before
unregistering the media device, creating a race condition. Fix it by
cleaning them up at cleanup time.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent e831cd25
...@@ -516,8 +516,6 @@ static int ipipe_init_entities(struct iss_ipipe_device *ipipe) ...@@ -516,8 +516,6 @@ static int ipipe_init_entities(struct iss_ipipe_device *ipipe)
void omap4iss_ipipe_unregister_entities(struct iss_ipipe_device *ipipe) void omap4iss_ipipe_unregister_entities(struct iss_ipipe_device *ipipe)
{ {
media_entity_cleanup(&ipipe->subdev.entity);
v4l2_device_unregister_subdev(&ipipe->subdev); v4l2_device_unregister_subdev(&ipipe->subdev);
} }
...@@ -566,5 +564,7 @@ int omap4iss_ipipe_init(struct iss_device *iss) ...@@ -566,5 +564,7 @@ int omap4iss_ipipe_init(struct iss_device *iss)
*/ */
void omap4iss_ipipe_cleanup(struct iss_device *iss) void omap4iss_ipipe_cleanup(struct iss_device *iss)
{ {
/* FIXME: are you sure there's nothing to do? */ struct iss_ipipe_device *ipipe = &iss->ipipe;
media_entity_cleanup(&ipipe->subdev.entity);
} }
...@@ -771,8 +771,6 @@ static int ipipeif_init_entities(struct iss_ipipeif_device *ipipeif) ...@@ -771,8 +771,6 @@ static int ipipeif_init_entities(struct iss_ipipeif_device *ipipeif)
void omap4iss_ipipeif_unregister_entities(struct iss_ipipeif_device *ipipeif) void omap4iss_ipipeif_unregister_entities(struct iss_ipipeif_device *ipipeif)
{ {
media_entity_cleanup(&ipipeif->subdev.entity);
v4l2_device_unregister_subdev(&ipipeif->subdev); v4l2_device_unregister_subdev(&ipipeif->subdev);
omap4iss_video_unregister(&ipipeif->video_out); omap4iss_video_unregister(&ipipeif->video_out);
} }
...@@ -826,5 +824,7 @@ int omap4iss_ipipeif_init(struct iss_device *iss) ...@@ -826,5 +824,7 @@ int omap4iss_ipipeif_init(struct iss_device *iss)
*/ */
void omap4iss_ipipeif_cleanup(struct iss_device *iss) void omap4iss_ipipeif_cleanup(struct iss_device *iss)
{ {
/* FIXME: are you sure there's nothing to do? */ struct iss_ipipeif_device *ipipeif = &iss->ipipeif;
media_entity_cleanup(&ipipeif->subdev.entity);
} }
...@@ -815,8 +815,6 @@ static int resizer_init_entities(struct iss_resizer_device *resizer) ...@@ -815,8 +815,6 @@ static int resizer_init_entities(struct iss_resizer_device *resizer)
void omap4iss_resizer_unregister_entities(struct iss_resizer_device *resizer) void omap4iss_resizer_unregister_entities(struct iss_resizer_device *resizer)
{ {
media_entity_cleanup(&resizer->subdev.entity);
v4l2_device_unregister_subdev(&resizer->subdev); v4l2_device_unregister_subdev(&resizer->subdev);
omap4iss_video_unregister(&resizer->video_out); omap4iss_video_unregister(&resizer->video_out);
} }
...@@ -870,5 +868,7 @@ int omap4iss_resizer_init(struct iss_device *iss) ...@@ -870,5 +868,7 @@ int omap4iss_resizer_init(struct iss_device *iss)
*/ */
void omap4iss_resizer_cleanup(struct iss_device *iss) void omap4iss_resizer_cleanup(struct iss_device *iss)
{ {
/* FIXME: are you sure there's nothing to do? */ struct iss_resizer_device *resizer = &iss->resizer;
media_entity_cleanup(&resizer->subdev.entity);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment