commit | 83ee87a31dc43a5fd6dee3562c146033c3a4cb39 | [log] [tgz] |
---|---|---|
author | Mauro Carvalho Chehab <mchehab@infradead.org> | Sat Jun 14 09:41:18 2008 -0300 |
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | Thu Jun 26 15:58:47 2008 -0300 |
tree | 3c8070786261f4994209328901bda6b183077e3c | |
parent | 913f5fc209247b607b1994a710315966f4f9d358 [diff] |
V4L/DVB (8026): Avoids an OOPS if dev struct can't be successfully recovered On some alsa versions, it seems that snd_pcm_substream_chip(substream) is returning a NULL pointer. This causes an OOPS, as reported by: https://bugs.launchpad.net/ubuntu/+source/linux-ubuntu-modules-2.6.24/+bug/212271 https://bugs.launchpad.net/ubuntu/+source/alsa-driver/+bug/212960 This patch avoids the OOPS by not letting and open() succeed. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/cx88/cx88-alsa.c b/drivers/media/video/cx88/cx88-alsa.c index e976fc6..80c8883 100644 --- a/drivers/media/video/cx88/cx88-alsa.c +++ b/drivers/media/video/cx88/cx88-alsa.c
@@ -332,6 +332,12 @@ struct snd_pcm_runtime *runtime = substream->runtime; int err; + if (!chip) { + printk(KERN_ERR "BUG: cx88 can't find device struct." + " Can't proceed with open\n"); + return -ENODEV; + } + err = snd_pcm_hw_constraint_pow2(runtime, 0, SNDRV_PCM_HW_PARAM_PERIODS); if (err < 0) goto _error;