diff options
author | Sakari Ailus <sakari.ailus@iki.fi> | 2013-06-11 05:50:49 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-06-19 07:58:39 -0400 |
commit | 7bb151b23b40c32c85f5116827a87fc23f0be4c4 (patch) | |
tree | 1f4594af71ab4ef5b82973f9950a5b347e2c93b5 /drivers/staging | |
parent | e049ca5e854263c821a15c0e25fe2ae202c365e1 (diff) |
[media] davinci_vpfe: Clean up media entity after unregistering subdev
media_entity_cleanup() frees the links array which will be accessed by
media_entity_remove_links() called by v4l2_device_unregister_subdev().
Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi>
Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/staging')
5 files changed, 14 insertions, 14 deletions
diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c index 05673ed45ce4..766a071b0a22 100644 --- a/drivers/staging/media/davinci_vpfe/dm365_ipipe.c +++ b/drivers/staging/media/davinci_vpfe/dm365_ipipe.c | |||
@@ -1751,10 +1751,10 @@ static const struct media_entity_operations ipipe_media_ops = { | |||
1751 | */ | 1751 | */ |
1752 | void vpfe_ipipe_unregister_entities(struct vpfe_ipipe_device *vpfe_ipipe) | 1752 | void vpfe_ipipe_unregister_entities(struct vpfe_ipipe_device *vpfe_ipipe) |
1753 | { | 1753 | { |
1754 | /* cleanup entity */ | ||
1755 | media_entity_cleanup(&vpfe_ipipe->subdev.entity); | ||
1756 | /* unregister subdev */ | 1754 | /* unregister subdev */ |
1757 | v4l2_device_unregister_subdev(&vpfe_ipipe->subdev); | 1755 | v4l2_device_unregister_subdev(&vpfe_ipipe->subdev); |
1756 | /* cleanup entity */ | ||
1757 | media_entity_cleanup(&vpfe_ipipe->subdev.entity); | ||
1758 | } | 1758 | } |
1759 | 1759 | ||
1760 | /* | 1760 | /* |
diff --git a/drivers/staging/media/davinci_vpfe/dm365_ipipeif.c b/drivers/staging/media/davinci_vpfe/dm365_ipipeif.c index b2f4ef84f3db..59540cd4bb98 100644 --- a/drivers/staging/media/davinci_vpfe/dm365_ipipeif.c +++ b/drivers/staging/media/davinci_vpfe/dm365_ipipeif.c | |||
@@ -947,10 +947,10 @@ void vpfe_ipipeif_unregister_entities(struct vpfe_ipipeif_device *ipipeif) | |||
947 | /* unregister video device */ | 947 | /* unregister video device */ |
948 | vpfe_video_unregister(&ipipeif->video_in); | 948 | vpfe_video_unregister(&ipipeif->video_in); |
949 | 949 | ||
950 | /* cleanup entity */ | ||
951 | media_entity_cleanup(&ipipeif->subdev.entity); | ||
952 | /* unregister subdev */ | 950 | /* unregister subdev */ |
953 | v4l2_device_unregister_subdev(&ipipeif->subdev); | 951 | v4l2_device_unregister_subdev(&ipipeif->subdev); |
952 | /* cleanup entity */ | ||
953 | media_entity_cleanup(&ipipeif->subdev.entity); | ||
954 | } | 954 | } |
955 | 955 | ||
956 | int | 956 | int |
diff --git a/drivers/staging/media/davinci_vpfe/dm365_isif.c b/drivers/staging/media/davinci_vpfe/dm365_isif.c index 5829360f74c9..ff48fce94fcb 100644 --- a/drivers/staging/media/davinci_vpfe/dm365_isif.c +++ b/drivers/staging/media/davinci_vpfe/dm365_isif.c | |||
@@ -1750,10 +1750,10 @@ static const struct media_entity_operations isif_media_ops = { | |||
1750 | void vpfe_isif_unregister_entities(struct vpfe_isif_device *isif) | 1750 | void vpfe_isif_unregister_entities(struct vpfe_isif_device *isif) |
1751 | { | 1751 | { |
1752 | vpfe_video_unregister(&isif->video_out); | 1752 | vpfe_video_unregister(&isif->video_out); |
1753 | /* cleanup entity */ | ||
1754 | media_entity_cleanup(&isif->subdev.entity); | ||
1755 | /* unregister subdev */ | 1753 | /* unregister subdev */ |
1756 | v4l2_device_unregister_subdev(&isif->subdev); | 1754 | v4l2_device_unregister_subdev(&isif->subdev); |
1755 | /* cleanup entity */ | ||
1756 | media_entity_cleanup(&isif->subdev.entity); | ||
1757 | } | 1757 | } |
1758 | 1758 | ||
1759 | static void isif_restore_defaults(struct vpfe_isif_device *isif) | 1759 | static void isif_restore_defaults(struct vpfe_isif_device *isif) |
diff --git a/drivers/staging/media/davinci_vpfe/dm365_resizer.c b/drivers/staging/media/davinci_vpfe/dm365_resizer.c index 126f84c4cb64..8e13bd494c98 100644 --- a/drivers/staging/media/davinci_vpfe/dm365_resizer.c +++ b/drivers/staging/media/davinci_vpfe/dm365_resizer.c | |||
@@ -1777,14 +1777,14 @@ void vpfe_resizer_unregister_entities(struct vpfe_resizer_device *vpfe_rsz) | |||
1777 | vpfe_video_unregister(&vpfe_rsz->resizer_a.video_out); | 1777 | vpfe_video_unregister(&vpfe_rsz->resizer_a.video_out); |
1778 | vpfe_video_unregister(&vpfe_rsz->resizer_b.video_out); | 1778 | vpfe_video_unregister(&vpfe_rsz->resizer_b.video_out); |
1779 | 1779 | ||
1780 | /* cleanup entity */ | ||
1781 | media_entity_cleanup(&vpfe_rsz->crop_resizer.subdev.entity); | ||
1782 | media_entity_cleanup(&vpfe_rsz->resizer_a.subdev.entity); | ||
1783 | media_entity_cleanup(&vpfe_rsz->resizer_b.subdev.entity); | ||
1784 | /* unregister subdev */ | 1780 | /* unregister subdev */ |
1785 | v4l2_device_unregister_subdev(&vpfe_rsz->crop_resizer.subdev); | 1781 | v4l2_device_unregister_subdev(&vpfe_rsz->crop_resizer.subdev); |
1786 | v4l2_device_unregister_subdev(&vpfe_rsz->resizer_a.subdev); | 1782 | v4l2_device_unregister_subdev(&vpfe_rsz->resizer_a.subdev); |
1787 | v4l2_device_unregister_subdev(&vpfe_rsz->resizer_b.subdev); | 1783 | v4l2_device_unregister_subdev(&vpfe_rsz->resizer_b.subdev); |
1784 | /* cleanup entity */ | ||
1785 | media_entity_cleanup(&vpfe_rsz->crop_resizer.subdev.entity); | ||
1786 | media_entity_cleanup(&vpfe_rsz->resizer_a.subdev.entity); | ||
1787 | media_entity_cleanup(&vpfe_rsz->resizer_b.subdev.entity); | ||
1788 | } | 1788 | } |
1789 | 1789 | ||
1790 | /* | 1790 | /* |
@@ -1865,12 +1865,12 @@ out_create_link: | |||
1865 | vpfe_video_unregister(&resizer->resizer_b.video_out); | 1865 | vpfe_video_unregister(&resizer->resizer_b.video_out); |
1866 | out_video_out2_register: | 1866 | out_video_out2_register: |
1867 | vpfe_video_unregister(&resizer->resizer_a.video_out); | 1867 | vpfe_video_unregister(&resizer->resizer_a.video_out); |
1868 | media_entity_cleanup(&resizer->crop_resizer.subdev.entity); | ||
1869 | media_entity_cleanup(&resizer->resizer_a.subdev.entity); | ||
1870 | media_entity_cleanup(&resizer->resizer_b.subdev.entity); | ||
1871 | v4l2_device_unregister_subdev(&resizer->crop_resizer.subdev); | 1868 | v4l2_device_unregister_subdev(&resizer->crop_resizer.subdev); |
1872 | v4l2_device_unregister_subdev(&resizer->resizer_a.subdev); | 1869 | v4l2_device_unregister_subdev(&resizer->resizer_a.subdev); |
1873 | v4l2_device_unregister_subdev(&resizer->resizer_b.subdev); | 1870 | v4l2_device_unregister_subdev(&resizer->resizer_b.subdev); |
1871 | media_entity_cleanup(&resizer->crop_resizer.subdev.entity); | ||
1872 | media_entity_cleanup(&resizer->resizer_a.subdev.entity); | ||
1873 | media_entity_cleanup(&resizer->resizer_b.subdev.entity); | ||
1874 | return ret; | 1874 | return ret; |
1875 | } | 1875 | } |
1876 | 1876 | ||
diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c b/drivers/staging/media/davinci_vpfe/vpfe_video.c index cb5410b390ef..24d98a6866bb 100644 --- a/drivers/staging/media/davinci_vpfe/vpfe_video.c +++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c | |||
@@ -1614,7 +1614,7 @@ int vpfe_video_register(struct vpfe_video_device *video, | |||
1614 | void vpfe_video_unregister(struct vpfe_video_device *video) | 1614 | void vpfe_video_unregister(struct vpfe_video_device *video) |
1615 | { | 1615 | { |
1616 | if (video_is_registered(&video->video_dev)) { | 1616 | if (video_is_registered(&video->video_dev)) { |
1617 | media_entity_cleanup(&video->video_dev.entity); | ||
1618 | video_unregister_device(&video->video_dev); | 1617 | video_unregister_device(&video->video_dev); |
1618 | media_entity_cleanup(&video->video_dev.entity); | ||
1619 | } | 1619 | } |
1620 | } | 1620 | } |