]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ALSA: scarlett2: Add clamp() in scarlett2_mixer_ctl_put()
authorGeoffrey D. Bennett <g@b4.vu>
Tue, 19 Dec 2023 17:37:52 +0000 (04:07 +1030)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 23:45:07 +0000 (15:45 -0800)
[ Upstream commit 04f8f053252b86c7583895c962d66747ecdc61b7 ]

Ensure the value passed to scarlett2_mixer_ctl_put() is between 0 and
SCARLETT2_MIXER_MAX_VALUE so we don't attempt to access outside
scarlett2_mixer_values[].

Signed-off-by: Geoffrey D. Bennett <g@b4.vu>
Fixes: 9e4d5c1be21f ("ALSA: usb-audio: Scarlett Gen 2 mixer interface")
Link: https://lore.kernel.org/r/3b19fb3da641b587749b85fe1daa1b4e696c0c1b.1703001053.git.g@b4.vu
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/usb/mixer_scarlett2.c

index f4351900fbbdccb0e1cbdb90014c55ecf4225c34..cdaf0470e62b6635c1852683cdd657babab71229 100644 (file)
@@ -3663,7 +3663,8 @@ static int scarlett2_mixer_ctl_put(struct snd_kcontrol *kctl,
        mutex_lock(&private->data_mutex);
 
        oval = private->mix[index];
-       val = ucontrol->value.integer.value[0];
+       val = clamp(ucontrol->value.integer.value[0],
+                   0L, (long)SCARLETT2_MIXER_MAX_VALUE);
        num_mixer_in = port_count[SCARLETT2_PORT_TYPE_MIX][SCARLETT2_PORT_OUT];
        mix_num = index / num_mixer_in;