summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean Delvare <khali@linux-fr.org>2008-10-10 16:41:38 +0400
committerGreg Kroah-Hartman <gregkh@suse.de>2008-10-23 01:13:20 +0400
commit7da0ca5720bceb79599bc42dde1c0a27107587ee (patch)
treea0fde56fcc4fc56fb60a6ce0d2009c05c0349490
parentabcfbcb70bce2a534a7c036abcfa29deec44120b (diff)
downloadlinux-7da0ca5720bceb79599bc42dde1c0a27107587ee.tar.xz
V4L: bttv: Prevent NULL pointer dereference in radio_open
(cherry picked from commit c37396c19403e249f12626187d51e92c915f2bc9) Fix the following crash in the bttv driver: BUG: unable to handle kernel NULL pointer dereference at 000000000000036c IP: [<ffffffffa037860a>] radio_open+0x3a/0x170 [bttv] This happens because radio_open assumes that all present bttv devices have a radio function. If a bttv device without radio and one with radio are installed on the same system, and the one without radio is registered first, then radio_open checks for the radio device number of a bttv device that has no radio function, and this breaks. All we have to do to fix it is to skip bttv devices without a radio function. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 0165aac533bf..7bcd328533c4 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3428,7 +3428,7 @@ static int radio_open(struct inode *inode, struct file *file)
dprintk("bttv: open minor=%d\n",minor);
for (i = 0; i < bttv_num; i++) {
- if (bttvs[i].radio_dev->minor == minor) {
+ if (bttvs[i].radio_dev && bttvs[i].radio_dev->minor == minor) {
btv = &bttvs[i];
break;
}