Commit 5a620c7c authored by Frank Schaefer's avatar Frank Schaefer Committed by Mauro Carvalho Chehab

[media] em28xx: always call em28xx_release_resources() in the usb disconnect handler

When the usb device is disconnected, the resources are no longer available,
so there is no reason to keep them registered.

This will also fix the various sysfs group removal warnings which we can see
since kernel 3.13.
Signed-off-by: default avatarFrank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent f188da43
...@@ -2876,6 +2876,8 @@ void em28xx_release_resources(struct em28xx *dev) ...@@ -2876,6 +2876,8 @@ void em28xx_release_resources(struct em28xx *dev)
{ {
/*FIXME: I2C IR should be disconnected */ /*FIXME: I2C IR should be disconnected */
mutex_lock(&dev->lock);
if (dev->def_i2c_bus) if (dev->def_i2c_bus)
em28xx_i2c_unregister(dev, 1); em28xx_i2c_unregister(dev, 1);
em28xx_i2c_unregister(dev, 0); em28xx_i2c_unregister(dev, 0);
...@@ -2884,6 +2886,8 @@ void em28xx_release_resources(struct em28xx *dev) ...@@ -2884,6 +2886,8 @@ void em28xx_release_resources(struct em28xx *dev)
/* Mark device as unused */ /* Mark device as unused */
clear_bit(dev->devno, &em28xx_devused); clear_bit(dev->devno, &em28xx_devused);
mutex_unlock(&dev->lock);
}; };
EXPORT_SYMBOL_GPL(em28xx_release_resources); EXPORT_SYMBOL_GPL(em28xx_release_resources);
...@@ -3386,14 +3390,8 @@ static void em28xx_usb_disconnect(struct usb_interface *interface) ...@@ -3386,14 +3390,8 @@ static void em28xx_usb_disconnect(struct usb_interface *interface)
em28xx_close_extension(dev); em28xx_close_extension(dev);
/* NOTE: must be called BEFORE the resources are released */
mutex_lock(&dev->lock);
if (!dev->users)
em28xx_release_resources(dev); em28xx_release_resources(dev);
mutex_unlock(&dev->lock);
if (!dev->users) { if (!dev->users) {
kfree(dev->alt_max_pkt_size_isoc); kfree(dev->alt_max_pkt_size_isoc);
kfree(dev); kfree(dev);
......
...@@ -1959,7 +1959,6 @@ static int em28xx_v4l2_close(struct file *filp) ...@@ -1959,7 +1959,6 @@ static int em28xx_v4l2_close(struct file *filp)
free the remaining resources */ free the remaining resources */
if (dev->disconnected) { if (dev->disconnected) {
em28xx_release_resources(dev);
kfree(dev->alt_max_pkt_size_isoc); kfree(dev->alt_max_pkt_size_isoc);
goto exit; goto exit;
} }
......
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