Skip to content

Commit

Permalink
[media] tm6000: Properly count device usage
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Thierry Reding authored and Mauro Carvalho Chehab committed Aug 31, 2011
1 parent fc4eab2 commit 6f2e77b
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions drivers/staging/tm6000/tm6000-cards.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit 6f2e77b

Please sign in to comment.