summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2022-04-20 20:34:53 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-05-18 09:18:07 +0200
commitee46fbb0d2dbc965f66d2975e90b4f233a7c2920 (patch)
treefd64540b987206aad555b0597d7c87b6145076d9 /sound
parent76e9dd91a84af5610293004c00f1111ce5724b58 (diff)
downloadlinux-rt-ee46fbb0d2dbc965f66d2975e90b4f233a7c2920.tar.gz
ASoC: max98090: Reject invalid values in custom control put()
[ Upstream commit 2fbe467bcbfc760a08f08475eea6bbd4c2874319 ] The max98090 driver has a custom put function for some controls which can only be updated in certain circumstances which makes no effort to validate that input is suitable for the control, allowing out of spec values to be written to the hardware and presented to userspace. Fix this by returning an error when invalid values are written. Signed-off-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20220420193454.2647908-1-broonie@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/max98090.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c
index 3fe09828745a..a25183f6fba6 100644
--- a/sound/soc/codecs/max98090.c
+++ b/sound/soc/codecs/max98090.c
@@ -419,6 +419,9 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol,
val = (val >> mc->shift) & mask;
+ if (sel < 0 || sel > mc->max)
+ return -EINVAL;
+
*select = sel;
/* Setting a volume is only valid if it is already On */