mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
ASoC: codecs: simple-mux: Fix enum control bounds check
[ Upstream commitf63ad68e18] simple_mux_control_put() rejects values greater than e->items, but enum control values are zero based. For the two-entry mux used by this driver, valid values are 0 and 1, so value 2 must be rejected as well. Accepting e->items can store an invalid mux state, pass it to the GPIO setter, and pass it on to the DAPM mux update path where it is used as an index into the enum text array. Use the same >= e->items check used by the ASoC enum helpers. Fixes:342fbb7578("ASoC: add simple-mux") Signed-off-by: Cássio Gabriel <cassiogabrielcontato@gmail.com> Link: https://patch.msgid.link/20260527-asoc-simple-mux-enum-bounds-v1-1-3f805b9fc671@gmail.com Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
de9eb0b44f
commit
164dcbec96
@@ -51,7 +51,7 @@ static int simple_mux_control_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_soc_component *c = snd_soc_dapm_to_component(dapm);
|
||||
struct simple_mux *priv = snd_soc_component_get_drvdata(c);
|
||||
|
||||
if (ucontrol->value.enumerated.item[0] > e->items)
|
||||
if (ucontrol->value.enumerated.item[0] >= e->items)
|
||||
return -EINVAL;
|
||||
|
||||
if (priv->mux == ucontrol->value.enumerated.item[0])
|
||||
|
||||
Reference in New Issue
Block a user