]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: fsl_easrc: Check the variable range in fsl_easrc_iec958_put_bits()
authorShengjiu Wang <shengjiu.wang@nxp.com>
Wed, 1 Apr 2026 09:42:24 +0000 (17:42 +0800)
committerMark Brown <broonie@kernel.org>
Wed, 1 Apr 2026 17:24:28 +0000 (18:24 +0100)
Add check of input value's range in fsl_easrc_iec958_put_bits(),
otherwise the wrong value may be written from user space.

Fixes: 955ac624058f ("ASoC: fsl_easrc: Add EASRC ASoC CPU DAI drivers")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Link: https://patch.msgid.link/20260401094226.2900532-10-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/fsl/fsl_easrc.c

index 6c56134c60cc810ef5ead528dafcf1550f0a349b..6de1e1d3d8dc8de4854df3639ad8efe167615ee9 100644 (file)
@@ -54,6 +54,9 @@ static int fsl_easrc_iec958_put_bits(struct snd_kcontrol *kcontrol,
        unsigned int regval = ucontrol->value.integer.value[0];
        int ret;
 
+       if (regval < EASRC_WIDTH_16_BIT || regval > EASRC_WIDTH_24_BIT)
+               return -EINVAL;
+
        ret = (easrc_priv->bps_iec958[mc->regbase] != regval);
 
        easrc_priv->bps_iec958[mc->regbase] = regval;