Browse Source

V4L/DVB (4736): Cx88-blackbird module is rejected during probe.

If the last cx88 board probed is not backbird based, and a previous board was,
the entire module is unloaded leading to an oops during mpeg_open on the
first /dev/videoN device.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Steven Toth 19 năm trước cách đây
mục cha
commit
019391e426
1 tập tin đã thay đổi với 3 bổ sung1 xóa
  1. 3 1
      drivers/media/video/cx88/cx88-mpeg.c

+ 3 - 1
drivers/media/video/cx88/cx88-mpeg.c

@@ -662,7 +662,6 @@ int cx8802_register_driver(struct cx8802_driver *drv)
 	}
 
 	list_for_each(list,&cx8802_devlist) {
-		i++;
 		h = list_entry(list, struct cx8802_dev, devlist);
 
 		printk(KERN_INFO "CORE %s: subsystem: %04x:%04x, board: %s [card=%d]\n",
@@ -685,6 +684,7 @@ int cx8802_register_driver(struct cx8802_driver *drv)
 
 		err = drv->probe(driver);
 		if (err == 0) {
+			i++;
 			mutex_lock(&drv->core->lock);
 			list_add_tail(&driver->devlist,&h->drvlist.devlist);
 			mutex_unlock(&drv->core->lock);
@@ -695,6 +695,8 @@ int cx8802_register_driver(struct cx8802_driver *drv)
 	}
 	if (i == 0)
 		err = -ENODEV;
+	else
+		err = 0;
 
 	return err;
 }