[media] tm6000: Properly count device usage
When the USB device is disconnected, the device usage bit is not cleared properly. This leads to errors when a device is unplugged and replugged several times until all TM6000_MAXBOARDS bits are used and keeps the driver from binding to the device. Signed-off-by: Thierry Reding <thierry.reding@avionic-design.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Родитель
fc4eab2cba
Коммит
6f2e77bb95
|
@ -1171,7 +1171,7 @@ static int tm6000_usb_probe(struct usb_interface *interface,
|
|||
mutex_init(&dev->usb_lock);
|
||||
|
||||
/* Increment usage count */
|
||||
tm6000_devused |= 1<<nr;
|
||||
set_bit(nr, &tm6000_devused);
|
||||
snprintf(dev->name, 29, "tm6000 #%d", nr);
|
||||
|
||||
dev->model = id->driver_info;
|
||||
|
@ -1287,7 +1287,7 @@ static int tm6000_usb_probe(struct usb_interface *interface,
|
|||
err:
|
||||
printk(KERN_ERR "tm6000: Error %d while registering\n", rc);
|
||||
|
||||
tm6000_devused &= ~(1<<nr);
|
||||
clear_bit(nr, &tm6000_devused);
|
||||
usb_put_dev(usbdev);
|
||||
|
||||
kfree(dev);
|
||||
|
@ -1345,6 +1345,7 @@ static void tm6000_usb_disconnect(struct usb_interface *interface)
|
|||
tm6000_close_extension(dev);
|
||||
tm6000_remove_from_devlist(dev);
|
||||
|
||||
clear_bit(dev->devno, &tm6000_devused);
|
||||
kfree(dev);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче