Commit 6f2e77bb authored by Thierry Reding's avatar Thierry Reding Committed by Mauro Carvalho Chehab

[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: default avatarThierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent fc4eab2c
...@@ -1171,7 +1171,7 @@ static int tm6000_usb_probe(struct usb_interface *interface, ...@@ -1171,7 +1171,7 @@ static int tm6000_usb_probe(struct usb_interface *interface,
mutex_init(&dev->usb_lock); mutex_init(&dev->usb_lock);
/* Increment usage count */ /* Increment usage count */
tm6000_devused |= 1<<nr; set_bit(nr, &tm6000_devused);
snprintf(dev->name, 29, "tm6000 #%d", nr); snprintf(dev->name, 29, "tm6000 #%d", nr);
dev->model = id->driver_info; dev->model = id->driver_info;
...@@ -1287,7 +1287,7 @@ static int tm6000_usb_probe(struct usb_interface *interface, ...@@ -1287,7 +1287,7 @@ static int tm6000_usb_probe(struct usb_interface *interface,
err: err:
printk(KERN_ERR "tm6000: Error %d while registering\n", rc); printk(KERN_ERR "tm6000: Error %d while registering\n", rc);
tm6000_devused &= ~(1<<nr); clear_bit(nr, &tm6000_devused);
usb_put_dev(usbdev); usb_put_dev(usbdev);
kfree(dev); kfree(dev);
...@@ -1345,6 +1345,7 @@ static void tm6000_usb_disconnect(struct usb_interface *interface) ...@@ -1345,6 +1345,7 @@ static void tm6000_usb_disconnect(struct usb_interface *interface)
tm6000_close_extension(dev); tm6000_close_extension(dev);
tm6000_remove_from_devlist(dev); tm6000_remove_from_devlist(dev);
clear_bit(dev->devno, &tm6000_devused);
kfree(dev); kfree(dev);
} }
......
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