Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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);
}