lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 508/879] ASoC: max98090: Move check for invalid values before casting in max98090_put_enab_tlv()
    Date
    From: Alexey Khoroshilov <khoroshilov@ispras.ru>

    [ Upstream commit f7a344468105ef8c54086dfdc800e6f5a8417d3e ]

    Validation of signed input should be done before casting to unsigned int.

    Found by Linux Verification Center (linuxtesting.org) with SVACE.

    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Suggested-by: Mark Brown <broonie@kernel.org>
    Fixes: 2fbe467bcbfc ("ASoC: max98090: Reject invalid values in custom control put()")
    Link: https://lore.kernel.org/r/1652999486-29653-1-git-send-email-khoroshilov@ispras.ru
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/codecs/max98090.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c
    index 62b41ca050a2..5513acd360b8 100644
    --- a/sound/soc/codecs/max98090.c
    +++ b/sound/soc/codecs/max98090.c
    @@ -393,7 +393,8 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol,
    struct soc_mixer_control *mc =
    (struct soc_mixer_control *)kcontrol->private_value;
    unsigned int mask = (1 << fls(mc->max)) - 1;
    - unsigned int sel = ucontrol->value.integer.value[0];
    + int sel_unchecked = ucontrol->value.integer.value[0];
    + unsigned int sel;
    unsigned int val = snd_soc_component_read(component, mc->reg);
    unsigned int *select;

    @@ -413,8 +414,9 @@ static int max98090_put_enab_tlv(struct snd_kcontrol *kcontrol,

    val = (val >> mc->shift) & mask;

    - if (sel < 0 || sel > mc->max)
    + if (sel_unchecked < 0 || sel_unchecked > mc->max)
    return -EINVAL;
    + sel = sel_unchecked;

    *select = sel;

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-08 03:46    [W:4.052 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site