lkml.org 
[lkml]   [2022]   [May]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 18/32] ASoC: ops: Validate input values in snd_soc_put_volsw_range()
    Date
    From: Mark Brown <broonie@kernel.org>

    [ Upstream commit aa22125c57f9e577f0a667e4fa07fc3fa8ca1e60 ]

    Check that values written via snd_soc_put_volsw_range() are
    within the range advertised by the control, ensuring that we
    don't write out of spec values to the hardware.

    Signed-off-by: Mark Brown <broonie@kernel.org>
    Link: https://lore.kernel.org/r/20220423131239.3375261-1-broonie@kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/soc-ops.c | 18 +++++++++++++++++-
    1 file changed, 17 insertions(+), 1 deletion(-)

    diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c
    index c88bc6bb41cf..7a37312c8e0c 100644
    --- a/sound/soc/soc-ops.c
    +++ b/sound/soc/soc-ops.c
    @@ -523,7 +523,15 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,
    unsigned int mask = (1 << fls(max)) - 1;
    unsigned int invert = mc->invert;
    unsigned int val, val_mask;
    - int err, ret;
    + int err, ret, tmp;
    +
    + tmp = ucontrol->value.integer.value[0];
    + if (tmp < 0)
    + return -EINVAL;
    + if (mc->platform_max && tmp > mc->platform_max)
    + return -EINVAL;
    + if (tmp > mc->max - mc->min + 1)
    + return -EINVAL;

    if (invert)
    val = (max - ucontrol->value.integer.value[0]) & mask;
    @@ -538,6 +546,14 @@ int snd_soc_put_volsw_range(struct snd_kcontrol *kcontrol,
    ret = err;

    if (snd_soc_volsw_is_stereo(mc)) {
    + tmp = ucontrol->value.integer.value[1];
    + if (tmp < 0)
    + return -EINVAL;
    + if (mc->platform_max && tmp > mc->platform_max)
    + return -EINVAL;
    + if (tmp > mc->max - mc->min + 1)
    + return -EINVAL;
    +
    if (invert)
    val = (max - ucontrol->value.integer.value[1]) & mask;
    else
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-05-16 21:44    [W:4.107 / U:0.508 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site