[ALSA] hda-codec - Add zero checks in input-mux helper functions
Takashi Iwai [Tue, 9 Oct 2007 09:58:41 +0000 (11:58 +0200)]
Added zero checks in input-mux helper functions to avoid Oops.
Some devices may have no input pins while the driver registers
control elements calling these functions.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>

sound/pci/hda/hda_codec.c

index 18ef0aa..239cdd8 100644 (file)
@@ -2341,6 +2341,8 @@ int snd_hda_input_mux_info(const struct hda_input_mux *imux,
        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_codec *codec,
 {
        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;