From cc172ee03ae07cdba643a3023e718e5eb82c3da8 Mon Sep 17 00:00:00 2001 From: Mohan Kumar Date: Mon, 5 Jul 2021 14:30:36 +0530 Subject: [PATCH] ASoC: tegra: fix mbdrc driver UBSAN tool reporting shift out of bound warning during the boot for mbdrc driver. Use 64 bit variable to avoid issue. Bug 200683609 Change-Id: I53808224584fc52614fd957eef371911f7dd144e Signed-off-by: Mohan Kumar Reviewed-on: https://git-master.nvidia.com/r/c/linux-5.10/+/2554092 Reviewed-by: svcacv Reviewed-by: svc_kernel_abi Reviewed-by: Viswanath L Reviewed-by: Sameer Pujar Reviewed-by: Sachin Nikam Reviewed-by: Sharad Gupta Reviewed-by: mobile promotions Tested-by: mobile promotions GVS: Gerrit_Virtual_Submit --- sound/soc/tegra/tegra210_mbdrc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sound/soc/tegra/tegra210_mbdrc.c b/sound/soc/tegra/tegra210_mbdrc.c index 0bc14c98..961c8495 100644 --- a/sound/soc/tegra/tegra210_mbdrc.c +++ b/sound/soc/tegra/tegra210_mbdrc.c @@ -145,7 +145,8 @@ static int tegra210_mbdrc_get(struct snd_kcontrol *kcontrol, (struct soc_mixer_control *)kcontrol->private_value; struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); struct tegra210_ope *ope = snd_soc_component_get_drvdata(cmpnt); - unsigned int mask = (1 << fls(mc->max)) - 1; + unsigned long long fls_val = 1 << fls(mc->max); + unsigned int mask = fls_val - 1; unsigned int val; regmap_read(ope->mbdrc_regmap, mc->reg, &val); @@ -164,7 +165,8 @@ static int tegra210_mbdrc_put(struct snd_kcontrol *kcontrol, (struct soc_mixer_control *)kcontrol->private_value; struct snd_soc_component *cmpnt = snd_soc_kcontrol_component(kcontrol); struct tegra210_ope *ope = snd_soc_component_get_drvdata(cmpnt); - unsigned int mask = (1 << fls(mc->max)) - 1; + unsigned long long fls_val = 1 << fls(mc->max); + unsigned int mask = fls_val - 1; unsigned int val; val = (ucontrol->value.integer.value[0] & mask);