aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2007-10-09 05:58:41 -0400
committerJaroslav Kysela <perex@perex.cz>2007-10-16 10:51:07 -0400
commit5513b0c58222d21b704cf352c554d9ab86c3fd97 (patch)
treeb2f51e7c1cf57e7a311657ce96537f999f336bad /sound
parent2469049e728ee0542d6617f81311a18a14e73826 (diff)
[ALSA] hda-codec - Add zero checks in input-mux helper functions
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>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/hda_codec.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 18ef0aa69d98..239cdd855dfe 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -2341,6 +2341,8 @@ int snd_hda_input_mux_info(const struct hda_input_mux *imux,
2341 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED; 2341 uinfo->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
2342 uinfo->count = 1; 2342 uinfo->count = 1;
2343 uinfo->value.enumerated.items = imux->num_items; 2343 uinfo->value.enumerated.items = imux->num_items;
2344 if (!imux->num_items)
2345 return 0;
2344 index = uinfo->value.enumerated.item; 2346 index = uinfo->value.enumerated.item;
2345 if (index >= imux->num_items) 2347 if (index >= imux->num_items)
2346 index = imux->num_items - 1; 2348 index = imux->num_items - 1;
@@ -2356,6 +2358,8 @@ int snd_hda_input_mux_put(struct hda_codec *codec,
2356{ 2358{
2357 unsigned int idx; 2359 unsigned int idx;
2358 2360
2361 if (!imux->num_items)
2362 return 0;
2359 idx = ucontrol->value.enumerated.item[0]; 2363 idx = ucontrol->value.enumerated.item[0];
2360 if (idx >= imux->num_items) 2364 if (idx >= imux->num_items)
2361 idx = imux->num_items - 1; 2365 idx = imux->num_items - 1;