Commit 22927e8e authored by Michel Ludwig's avatar Michel Ludwig Committed by Mauro Carvalho Chehab
Browse files

V4L/DVB (12772): tm6000: fix module load/unload

parent 9701dc94
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -230,6 +230,7 @@ static int tm6000_usb_probe(struct usb_interface *interface,
	/* Increment usage count */
	tm6000_devused|=1<<nr;

	INIT_LIST_HEAD(&dev->tm6000_corelist);
	dev->udev= usbdev;
	dev->model=id->driver_info;
	snprintf(dev->name, 29, "tm6000 #%d", nr);
@@ -354,8 +355,6 @@ static void tm6000_usb_disconnect(struct usb_interface *interface)
	if (!dev)
		return;

	tm6000_i2c_unregister(dev);

	printk("tm6000: disconnecting %s\n", dev->name);

	mutex_lock(&dev->lock);
@@ -369,6 +368,7 @@ static void tm6000_usb_disconnect(struct usb_interface *interface)
	dev->state |= DEV_DISCONNECTED;

	mutex_unlock(&dev->lock);
	kfree(dev);
}

static struct usb_driver tm6000_usb_driver = {
+5 −6
Original line number Diff line number Diff line
@@ -1528,15 +1528,14 @@ int tm6000_v4l2_register(struct tm6000_core *dev)
int tm6000_v4l2_unregister(struct tm6000_core *dev)
{
	struct tm6000_core *h;
	struct list_head *list;
	struct list_head *pos, *tmp;

	while (!list_empty(&tm6000_corelist)) {
		list = tm6000_corelist.next;
		h = list_entry(list, struct tm6000_core, tm6000_corelist);
		if (h == dev) {
	video_unregister_device(&dev->vfd);

	list_for_each_safe(pos, tmp, &tm6000_corelist) {
		h = list_entry(pos, struct tm6000_core, tm6000_corelist);
		if (h == dev) {
			list_del(list);
			kfree (h);
		}
	}