| From f67c4384c2adb0bc4f3797b5a4ba3328f31f791b Mon Sep 17 00:00:00 2001 |
| From: Takashi Iwai <tiwai@suse.de> |
| Date: Tue, 7 Apr 2020 10:44:02 +0200 |
| Subject: [PATCH] ALSA: ice1724: Fix invalid access for enumerated ctl items |
| |
| 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: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/sound/pci/ice1712/prodigy_hifi.c b/sound/pci/ice1712/prodigy_hifi.c |
| index 9d71e9d5c9a0..3cf41c11a405 100644 |
| --- a/sound/pci/ice1712/prodigy_hifi.c |
| +++ b/sound/pci/ice1712/prodigy_hifi.c |
| @@ -536,7 +536,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; |
| } |
| @@ -550,7 +550,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; |
| -- |
| 2.7.4 |
| |