diff options
author | Steven Toth <stoth@hauppauge.com> | 2006-10-06 20:29:25 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-12-10 05:50:50 -0500 |
commit | 019391e426266a346ac2f1b3d3c70c26b482ff31 (patch) | |
tree | ff4ce2f08e6a26cd86a8356f7b94aee848cd82f8 /drivers/media/video/cx88/cx88-mpeg.c | |
parent | 3ac706d2f77fd7bbef037a6137d08a72d7dc8334 (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.c | 4 |
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 | } |