aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-mpeg.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@hauppauge.com>2006-10-06 20:29:25 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-12-10 05:50:50 -0500
commit019391e426266a346ac2f1b3d3c70c26b482ff31 (patch)
treeff4ce2f08e6a26cd86a8356f7b94aee848cd82f8 /drivers/media/video/cx88/cx88-mpeg.c
parent3ac706d2f77fd7bbef037a6137d08a72d7dc8334 (diff)
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>
Diffstat (limited to 'drivers/media/video/cx88/cx88-mpeg.c')
-rw-r--r--drivers/media/video/cx88/cx88-mpeg.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/media/video/cx88/cx88-mpeg.c b/drivers/media/video/cx88/cx88-mpeg.c
index 3d8e6d74e064..1fe1a833c7c7 100644
--- a/drivers/media/video/cx88/cx88-mpeg.c
+++ b/drivers/media/video/cx88/cx88-mpeg.c
@@ -662,7 +662,6 @@ int cx8802_register_driver(struct cx8802_driver *drv)
662 } 662 }
663 663
664 list_for_each(list,&cx8802_devlist) { 664 list_for_each(list,&cx8802_devlist) {
665 i++;
666 h = list_entry(list, struct cx8802_dev, devlist); 665 h = list_entry(list, struct cx8802_dev, devlist);
667 666
668 printk(KERN_INFO "CORE %s: subsystem: %04x:%04x, board: %s [card=%d]\n", 667 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)
685 684
686 err = drv->probe(driver); 685 err = drv->probe(driver);
687 if (err == 0) { 686 if (err == 0) {
687 i++;
688 mutex_lock(&drv->core->lock); 688 mutex_lock(&drv->core->lock);
689 list_add_tail(&driver->devlist,&h->drvlist.devlist); 689 list_add_tail(&driver->devlist,&h->drvlist.devlist);
690 mutex_unlock(&drv->core->lock); 690 mutex_unlock(&drv->core->lock);
@@ -695,6 +695,8 @@ int cx8802_register_driver(struct cx8802_driver *drv)
695 } 695 }
696 if (i == 0) 696 if (i == 0)
697 err = -ENODEV; 697 err = -ENODEV;
698 else
699 err = 0;
698 700
699 return err; 701 return err;
700} 702}