| From 4cf28e9ae6e2e11a044be1bcbcfa1b0d8675fe4d Mon Sep 17 00:00:00 2001 |
| From: Mark Brown <broonie@kernel.org> |
| Date: Mon, 24 Jan 2022 15:32:53 +0000 |
| Subject: ASoC: ops: Reject out of bounds values in snd_soc_put_xr_sx() |
| |
| From: Mark Brown <broonie@kernel.org> |
| |
| commit 4cf28e9ae6e2e11a044be1bcbcfa1b0d8675fe4d upstream. |
| |
| We don't currently validate that the values being set are within the range |
| we advertised to userspace as being valid, do so and reject any values |
| that are out of range. |
| |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Cc: stable@vger.kernel.org |
| Link: https://lore.kernel.org/r/20220124153253.3548853-4-broonie@kernel.org |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| sound/soc/soc-ops.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| --- a/sound/soc/soc-ops.c |
| +++ b/sound/soc/soc-ops.c |
| @@ -880,6 +880,8 @@ int snd_soc_put_xr_sx(struct snd_kcontro |
| unsigned int i, regval, regmask; |
| int err; |
| |
| + if (val < mc->min || val > mc->max) |
| + return -EINVAL; |
| if (invert) |
| val = max - val; |
| val &= mask; |