[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: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
这个提交包含在:
Frank Schaefer
2014-01-12 13:24:24 -03:00
提交者 Mauro Carvalho Chehab
父节点 f188da4395
当前提交 5a620c7c1c
修改 2 个文件,包含 5 行新增8 行删除

查看文件

@@ -2876,6 +2876,8 @@ void em28xx_release_resources(struct em28xx *dev)
{
/*FIXME: I2C IR should be disconnected */
mutex_lock(&dev->lock);
if (dev->def_i2c_bus)
em28xx_i2c_unregister(dev, 1);
em28xx_i2c_unregister(dev, 0);
@@ -2884,6 +2886,8 @@ void em28xx_release_resources(struct em28xx *dev)
/* Mark device as unused */
clear_bit(dev->devno, &em28xx_devused);
mutex_unlock(&dev->lock);
};
EXPORT_SYMBOL_GPL(em28xx_release_resources);
@@ -3386,13 +3390,7 @@ static void em28xx_usb_disconnect(struct usb_interface *interface)
em28xx_close_extension(dev);
/* NOTE: must be called BEFORE the resources are released */
mutex_lock(&dev->lock);
if (!dev->users)
em28xx_release_resources(dev);
mutex_unlock(&dev->lock);
em28xx_release_resources(dev);
if (!dev->users) {
kfree(dev->alt_max_pkt_size_isoc);

查看文件

@@ -1959,7 +1959,6 @@ static int em28xx_v4l2_close(struct file *filp)
free the remaining resources */
if (dev->disconnected) {
em28xx_release_resources(dev);
kfree(dev->alt_max_pkt_size_isoc);
goto exit;
}