提交 6f2e77bb 编写于 作者: T Thierry Reding 提交者: 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: NThierry Reding <thierry.reding@avionic-design.de>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 fc4eab2c
......@@ -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);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册