ALSA: ice1724: Fix invalid access for enumerated ctl items
authorTakashi Iwai <tiwai@suse.de>
Tue, 7 Apr 2020 08:44:02 +0000 (10:44 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 24 Apr 2020 06:00:34 +0000 (08:00 +0200)
commit c47914c00be346bc5b48c48de7b0da5c2d1a296c upstream.

The access to Analog Capture Source control value implemented in
prodigy_hifi.c is wrong, as caught by the recently introduced sanity
check; it should be accessing value.enumerated.item[] instead of
value.integer.value[].  This patch corrects the wrong access pattern.

Fixes: 6b8d6e5518e2 ("[ALSA] ICE1724: Added support for Audiotrak Prodigy 7.1 HiFi & HD2, Hercules Fortissimo IV")
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207139
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20200407084402.25589-3-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/pci/ice1712/prodigy_hifi.c

index 2697402b5195799243e115fef1996c7293eb773d..41f6450a2539f44734e228a099d843547a1f7280 100644 (file)
@@ -569,7 +569,7 @@ static int wm_adc_mux_enum_get(struct snd_kcontrol *kcontrol,
        struct snd_ice1712 *ice = snd_kcontrol_chip(kcontrol);
 
        mutex_lock(&ice->gpio_mutex);
-       ucontrol->value.integer.value[0] = wm_get(ice, WM_ADC_MUX) & 0x1f;
+       ucontrol->value.enumerated.item[0] = wm_get(ice, WM_ADC_MUX) & 0x1f;
        mutex_unlock(&ice->gpio_mutex);
        return 0;
 }
@@ -583,7 +583,7 @@ static int wm_adc_mux_enum_put(struct snd_kcontrol *kcontrol,
 
        mutex_lock(&ice->gpio_mutex);
        oval = wm_get(ice, WM_ADC_MUX);
-       nval = (oval & 0xe0) | ucontrol->value.integer.value[0];
+       nval = (oval & 0xe0) | ucontrol->value.enumerated.item[0];
        if (nval != oval) {
                wm_put(ice, WM_ADC_MUX, nval);
                change = 1;