diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-03-14 12:12:39 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-03-14 12:12:39 -0300 |
commit | 1c56b8f4079af9413ea15f420259e97187a3bf7a (patch) | |
tree | 42a3f1eb4a419e49badcc1ce966120f6a88a1fe1 /linux/drivers/media/video/cx88/cx88-alsa.c | |
parent | e07574e1290ffc63432bc2b06a7677abc365de2d (diff) | |
parent | 0b831dcdb633365e47049c9aa5f243cce99569e5 (diff) | |
download | mediapointer-dvb-s2-1c56b8f4079af9413ea15f420259e97187a3bf7a.tar.gz mediapointer-dvb-s2-1c56b8f4079af9413ea15f420259e97187a3bf7a.tar.bz2 |
Snd_cx88_create: don't dereference NULL core
From: Duncan Sands <duncan.sands@math.u-psud.fr>
If the call to cx88_core_get returns a NULL value, it is dereferenced
by cx88_reset, and perhaps by cx88_core_put. Spotted by the Coverity
checker.
Signed-off-by: Duncan Sands <baldrick@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'linux/drivers/media/video/cx88/cx88-alsa.c')
-rw-r--r-- | linux/drivers/media/video/cx88/cx88-alsa.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/linux/drivers/media/video/cx88/cx88-alsa.c b/linux/drivers/media/video/cx88/cx88-alsa.c index e5b9007c2..e6cc40e04 100644 --- a/linux/drivers/media/video/cx88/cx88-alsa.c +++ b/linux/drivers/media/video/cx88/cx88-alsa.c @@ -686,6 +686,11 @@ static int __devinit snd_cx88_create(snd_card_t *card, struct pci_dev *pci, chip = (snd_cx88_card_t *) card->private_data; core = cx88_core_get(pci); + if (NULL == core) { + err = -EINVAL; + kfree (chip); + return err; + } if (!pci_dma_supported(pci,0xffffffff)) { dprintk(0, "%s/1: Oops: no 32bit PCI DMA ???\n",core->name); @@ -702,11 +707,6 @@ static int __devinit snd_cx88_create(snd_card_t *card, struct pci_dev *pci, spin_lock_init(&chip->reg_lock); cx88_reset(core); - if (NULL == core) { - err = -EINVAL; - kfree (chip); - return err; - } chip->core = core; /* get irq */ |