Commit fc3570ce authored by Geoffrey D. Bennett's avatar Geoffrey D. Bennett Committed by felix
Browse files

ALSA: scarlett2: Add clamp() in scarlett2_mixer_ctl_put()

stable inclusion
from stable-v5.15.148
commit e517645ead5ea22c69d2a44694baa23fe1ce7c2b
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/I9Q9ID
CVE: CVE-2023-52674

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=e517645ead5ea22c69d2a44694baa23fe1ce7c2b



--------------------------------

[ 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: default avatarGeoffrey D. Bennett <g@b4.vu>
Fixes: 9e4d5c1b ("ALSA: usb-audio: Scarlett Gen 2 mixer interface")
Link: https://lore.kernel.org/r/3b19fb3da641b587749b85fe1daa1b4e696c0c1b.1703001053.git.g@b4.vu


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>

Conflicts:
    sound/usb/mixer_scarlett_gen2.c
[Some context inconsistencies exist in the scarlett2_mixer_ctl_put
function, which does not affect the patch]
Signed-off-by: default avatarFelix Fu <fuzhen5@huawei.com>
parent 3e487df5
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1509,7 +1509,8 @@ static int scarlett2_mixer_ctl_put(struct snd_kcontrol *kctl,
	mutex_lock(&private->data_mutex);

	oval = private->mix[elem->control];
	val = ucontrol->value.integer.value[0];
	val = clamp(ucontrol->value.integer.value[0],
		    0L, (long)SCARLETT2_MIXER_MAX_VALUE);
	num_mixer_in = ports[SCARLETT2_PORT_TYPE_MIX].num[SCARLETT2_PORT_OUT];
	mix_num = elem->control / num_mixer_in;