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>
This commit is contained in:
parent
3ac706d2f7
commit
019391e426
1 changed files with 3 additions and 1 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue