aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorSakari Ailus <sakari.ailus@iki.fi>2013-06-11 05:50:49 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2013-06-19 07:58:39 -0400
commit7bb151b23b40c32c85f5116827a87fc23f0be4c4 (patch)
tree1f4594af71ab4ef5b82973f9950a5b347e2c93b5 /drivers/staging
parente049ca5e854263c821a15c0e25fe2ae202c365e1 (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')
-rw-r--r--drivers/staging/media/davinci_vpfe/dm365_ipipe.c4
-rw-r--r--drivers/staging/media/davinci_vpfe/dm365_ipipeif.c4
-rw-r--r--drivers/staging/media/davinci_vpfe/dm365_isif.c4
-rw-r--r--drivers/staging/media/davinci_vpfe/dm365_resizer.c14
-rw-r--r--drivers/staging/media/davinci_vpfe/vpfe_video.c2
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 */
1752void vpfe_ipipe_unregister_entities(struct vpfe_ipipe_device *vpfe_ipipe) 1752void 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
956int 956int
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 = {
1750void vpfe_isif_unregister_entities(struct vpfe_isif_device *isif) 1750void 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
1759static void isif_restore_defaults(struct vpfe_isif_device *isif) 1759static 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);
1866out_video_out2_register: 1866out_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,
1614void vpfe_video_unregister(struct vpfe_video_device *video) 1614void 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}