summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-10-20 16:08:50 (GMT)
committerTakashi Iwai <tiwai@suse.de>2014-10-20 16:25:41 (GMT)
commita7e6fb99150ebb2852ebd0e7bad9ce37cc9a79dd (patch)
tree17248fa8afa98fef3ec38ca332ec921cd95ff062
parentdf803e1389716bcdf11932fff47d7f1fc198bc8a (diff)
downloadlinux-a7e6fb99150ebb2852ebd0e7bad9ce37cc9a79dd.tar.xz
ALSA: control: Allow to pass items zero to snd_ctl_enum_info()
Although this is weird, some drivers want to allow empty control elements intentionally, e.g. the number of items may change depending on the firmware status. Let the function simply returning in such a case. Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/core/control.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sound/core/control.c b/sound/core/control.c
index f95df84..5c35bba 100644
--- a/sound/core/control.c
+++ b/sound/core/control.c
@@ -1745,6 +1745,8 @@ int snd_ctl_enum_info(struct snd_ctl_elem_info *info, unsigned int channels,
info->type = SNDRV_CTL_ELEM_TYPE_ENUMERATED;
info->count = channels;
info->value.enumerated.items = items;
+ if (!items)
+ return 0;
if (info->value.enumerated.item >= items)
info->value.enumerated.item = items - 1;
WARN(strlen(names[info->value.enumerated.item]) >= sizeof(info->value.enumerated.name),