[alsa-devel] Alsa 1.0.15rc2 and oops with Dell M1210
Takashi Iwai
tiwai at suse.de
Tue Oct 9 11:55:32 CEST 2007
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.
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;
More information about the Alsa-devel
mailing list