diff options
| author | Takashi Iwai <tiwai@suse.de> | 2007-10-09 05:58:41 -0400 |
|---|---|---|
| committer | Jaroslav Kysela <perex@perex.cz> | 2007-10-16 10:51:07 -0400 |
| commit | 5513b0c58222d21b704cf352c554d9ab86c3fd97 (patch) | |
| tree | b2f51e7c1cf57e7a311657ce96537f999f336bad /sound | |
| parent | 2469049e728ee0542d6617f81311a18a14e73826 (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.c | 4 |
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; |
