Em Tuesday 09 October 2007 06:55:32 Takashi Iwai escreveu: > At Wed, 3 Oct 2007 16:58:35 -0300, > > Herton Ronaldo Krzesinski wrote: > > Em Saturday 29 September 2007 18:53:29 Herton Ronaldo Krzesinski escreveu: > > > On Saturday 29 September 2007 06:07:17 zhejiang wrote: > > > > Seems that the spec->input_mux contains no item at all. > > > > So system maybe crash in the snd_hda_input_mux_info() when try to > > > > copy the items[].label,which is null pointer. > > > > > > > > May you replace the function stac92xx_mux_enum_info() in > > > > alsa-driver-1.0.15rc2/alsa-kernel/pci/hda/patch_sigmatel.c ? > > > > > > > > static int stac92xx_mux_enum_info(struct snd_kcontrol *kcontrol, > > > > struct snd_ctl_elem_info *uinfo) > > > > { > > > > struct hda_codec *codec = snd_kcontrol_chip(kcontrol); > > > > struct sigmatel_spec *spec = codec->spec; > > > > printk("spec->input_mux->num_items is %d > > > > \n",spec->input_mux->num_items); > > > > if(!spec->input_mux->num_items) > > > > return 0; > > > > return snd_hda_input_mux_info(spec->input_mux, uinfo); > > > > } > > > > > > > > Does it still crash? > > > > What's the number of num_items? > > > > I received feedback from the reporter: > > spec->input_mux->num_items is 0 > > > > Also sound works fine, no more crashes. > > OK, then could you check whether the patch below fixes the problem? > Such a check should be done in the common routine. Yes, the patch was reported to me as working fine, thanks. > > > Thanks, > > Takashi > > diff -r a4cf3aa3dc5b pci/hda/hda_codec.c > --- a/pci/hda/hda_codec.c Tue Oct 09 10:34:06 2007 +0200 > +++ b/pci/hda/hda_codec.c Tue Oct 09 11:53:39 2007 +0200 > @@ -2341,6 +2341,8 @@ int snd_hda_input_mux_info(const struct > uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; > uinfo->count = 1; > uinfo->value.enumerated.items = imux->num_items; > + if (!imux->num_items) > + return 0; > index = uinfo->value.enumerated.item; > if (index >= imux->num_items) > index = imux->num_items - 1; > @@ -2356,6 +2358,8 @@ int snd_hda_input_mux_put(struct hda_cod > { > unsigned int idx; > > + if (!imux->num_items) > + return 0; > idx = ucontrol->value.enumerated.item[0]; > if (idx >= imux->num_items) > idx = imux->num_items - 1; -- []'s Herton _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel