The "val" and "val2" variables need to signed for the checking to work as intended. Fixes: 817f7c9335ec ("ASoC: ops: Reject out of bounds values in snd_soc_put_volsw()") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- sound/soc/soc-ops.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c index dc0e7c8d31f3..0091fa96eb48 100644 --- a/sound/soc/soc-ops.c +++ b/sound/soc/soc-ops.c @@ -310,8 +310,9 @@ int snd_soc_put_volsw(struct snd_kcontrol *kcontrol, unsigned int invert = mc->invert; int err; bool type_2r = false; - unsigned int val2 = 0; - unsigned int val, val_mask; + unsigned int val_mask; + int val2 = 0; + int val; if (sign_bit) mask = BIT(sign_bit + 1) - 1; -- 2.20.1