V4L/DVB (4736): Cx88-blackbird module is rejected during probe.
authorSteven Toth <stoth@hauppauge.com>
Sat, 7 Oct 2006 00:29:25 +0000 (21:29 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 10 Dec 2006 10:50:50 +0000 (08:50 -0200)
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>
drivers/media/video/cx88/cx88-mpeg.c

index 3d8e6d74e064744c91060129a27f6859846a8761..1fe1a833c7c714a5672537d1ee5d90bd4dcad2f1 100644 (file)
@@ -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;
 }