media: omap3isp: Destroy CSI-2 phy mutexes in error and module removal
authorSakari Ailus <sakari.ailus@linux.intel.com>
Sat, 4 Mar 2017 15:07:08 +0000 (10:07 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Wed, 19 Jul 2017 19:45:44 +0000 (15:45 -0400)
The CSI-2 phy driver did initialise mutexes in its init function but there
was no corresponding cleanup function destroying them. Fix that. Also
clean up ISP module initialisation a little.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Tested-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/platform/omap3isp/isp.c
drivers/media/platform/omap3isp/ispcsiphy.c
drivers/media/platform/omap3isp/ispcsiphy.h

index 40d1a20..088dc8b 100644 (file)
@@ -1859,6 +1859,7 @@ static void isp_cleanup_modules(struct isp_device *isp)
        omap3isp_ccdc_cleanup(isp);
        omap3isp_ccp2_cleanup(isp);
        omap3isp_csi2_cleanup(isp);
+       omap3isp_csiphy_cleanup(isp);
 }
 
 static int isp_initialize_modules(struct isp_device *isp)
@@ -1868,7 +1869,7 @@ static int isp_initialize_modules(struct isp_device *isp)
        ret = omap3isp_csiphy_init(isp);
        if (ret < 0) {
                dev_err(isp->dev, "CSI PHY initialization failed\n");
-               goto error_csiphy;
+               return ret;
        }
 
        ret = omap3isp_csi2_init(isp);
@@ -1936,7 +1937,8 @@ error_ccdc:
 error_ccp2:
        omap3isp_csi2_cleanup(isp);
 error_csi2:
-error_csiphy:
+       omap3isp_csiphy_cleanup(isp);
+
        return ret;
 }
 
index 871d4fe..83940e9 100644 (file)
@@ -345,3 +345,9 @@ int omap3isp_csiphy_init(struct isp_device *isp)
 
        return 0;
 }
+
+void omap3isp_csiphy_cleanup(struct isp_device *isp)
+{
+       mutex_destroy(&isp->isp_csiphy1.mutex);
+       mutex_destroy(&isp->isp_csiphy2.mutex);
+}
index 28b63b2..978ca5c 100644 (file)
@@ -39,5 +39,6 @@ struct isp_csiphy {
 int omap3isp_csiphy_acquire(struct isp_csiphy *phy);
 void omap3isp_csiphy_release(struct isp_csiphy *phy);
 int omap3isp_csiphy_init(struct isp_device *isp);
+void omap3isp_csiphy_cleanup(struct isp_device *isp);
 
 #endif /* OMAP3_ISP_CSI_PHY_H */