[alsa-devel] [BUG] NULL pointer dereference in patch_sigmatel.c

Takashi Iwai tiwai at suse.de
Mon Aug 10 07:39:28 CEST 2009


At Mon, 10 Aug 2009 02:02:06 +0300,
Ozan Çağlayan wrote:
> 
> Takashi Iwai wrote:
> > At Sun, 09 Aug 2009 15:10:31 +0300,
> >
> >   
> > Could you load the module with probe_only=1 option and give
> > alsa-info.sh output (or at least codec#* proc file)?
> >   
> 
> Ok, will provide that info too. BTW,
> 
> CPI: PCI Interrupt 0000:00:1b.0[A] -> GSI 21 (level, low) -> IRQ 21
> PCI: Setting latency timer of device 0000:00:1b.0 to 64
> ** codec:0xf5846800
> ** spec->dmux_nids:0x00000000
> BUG: unable to handle kernel NULL pointer dereference at 00000000
> IP: [<f8c7b4d5>] :snd_hda_codec_idt:stac92xx_init+0x29b/0x520
> *pde = 00000000 
> Oops: 0000 [#1] SMP
> 
> 
> spec->dmux_nids is NULL. Found the following commit:

Good catch.  How about the patch below?


Thanks,

Takashi

---
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index a75d6a0..7da4dc4 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -3701,7 +3701,7 @@ static int set_mic_route(struct hda_codec *codec,
 		if (i < 0)
 			return -1;
 		mic->mux_idx = i;
-	}  else {
+	}  else if (spec->dmux->nids) {
 		/* digital pin */
 		mic->mux_idx = 0;
 		i = get_connection_index(codec, spec->dmux_nids[0], pin);
@@ -4404,7 +4404,8 @@ static int stac92xx_init(struct hda_codec *codec)
 	}
 	if (spec->auto_mic) {
 		/* initialize connection to analog input */
-		snd_hda_codec_write_cache(codec, spec->dmux_nids[0], 0,
+		if (dmux->nids)
+			snd_hda_codec_write_cache(codec, spec->dmux_nids[0], 0,
 					  AC_VERB_SET_CONNECT_SEL, 0);
 		if (enable_pin_detect(codec, spec->ext_mic.pin, STAC_MIC_EVENT))
 			stac_issue_unsol_event(codec, spec->ext_mic.pin);


More information about the Alsa-devel mailing list