aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/usb/em28xx/em28xx-cards.c12
-rw-r--r--drivers/media/usb/em28xx/em28xx-video.c1
2 files changed, 5 insertions, 8 deletions
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index fa35a308ad67..3b332d527ccb 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -2876,6 +2876,8 @@ void em28xx_release_resources(struct em28xx *dev)
2876{ 2876{
2877 /*FIXME: I2C IR should be disconnected */ 2877 /*FIXME: I2C IR should be disconnected */
2878 2878
2879 mutex_lock(&dev->lock);
2880
2879 if (dev->def_i2c_bus) 2881 if (dev->def_i2c_bus)
2880 em28xx_i2c_unregister(dev, 1); 2882 em28xx_i2c_unregister(dev, 1);
2881 em28xx_i2c_unregister(dev, 0); 2883 em28xx_i2c_unregister(dev, 0);
@@ -2884,6 +2886,8 @@ void em28xx_release_resources(struct em28xx *dev)
2884 2886
2885 /* Mark device as unused */ 2887 /* Mark device as unused */
2886 clear_bit(dev->devno, &em28xx_devused); 2888 clear_bit(dev->devno, &em28xx_devused);
2889
2890 mutex_unlock(&dev->lock);
2887}; 2891};
2888EXPORT_SYMBOL_GPL(em28xx_release_resources); 2892EXPORT_SYMBOL_GPL(em28xx_release_resources);
2889 2893
@@ -3386,13 +3390,7 @@ static void em28xx_usb_disconnect(struct usb_interface *interface)
3386 3390
3387 em28xx_close_extension(dev); 3391 em28xx_close_extension(dev);
3388 3392
3389 /* NOTE: must be called BEFORE the resources are released */ 3393 em28xx_release_resources(dev);
3390
3391 mutex_lock(&dev->lock);
3392 if (!dev->users)
3393 em28xx_release_resources(dev);
3394
3395 mutex_unlock(&dev->lock);
3396 3394
3397 if (!dev->users) { 3395 if (!dev->users) {
3398 kfree(dev->alt_max_pkt_size_isoc); 3396 kfree(dev->alt_max_pkt_size_isoc);
diff --git a/drivers/media/usb/em28xx/em28xx-video.c b/drivers/media/usb/em28xx/em28xx-video.c
index d8ca37abc917..cda0dc3555d2 100644
--- a/drivers/media/usb/em28xx/em28xx-video.c
+++ b/drivers/media/usb/em28xx/em28xx-video.c
@@ -1959,7 +1959,6 @@ static int em28xx_v4l2_close(struct file *filp)
1959 free the remaining resources */ 1959 free the remaining resources */
1960 1960
1961 if (dev->disconnected) { 1961 if (dev->disconnected) {
1962 em28xx_release_resources(dev);
1963 kfree(dev->alt_max_pkt_size_isoc); 1962 kfree(dev->alt_max_pkt_size_isoc);
1964 goto exit; 1963 goto exit;
1965 } 1964 }