diff options
author | Chen-Yu Tsai <wens@csie.org> | 2016-08-27 19:27:58 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-10-31 04:14:00 -0600 |
commit | 41201d18e2c40d82bb022b382c417c216c91fbbb (patch) | |
tree | 97b5cafc5aafc39b91824c330a2c7a96a3c98769 /sound | |
parent | 41b4b00e6daa22c75bd6a8961fa2aef3370c9d8c (diff) | |
download | linux-stable-41201d18e2c40d82bb022b382c417c216c91fbbb.tar.gz linux-stable-41201d18e2c40d82bb022b382c417c216c91fbbb.tar.bz2 linux-stable-41201d18e2c40d82bb022b382c417c216c91fbbb.zip |
ASoC: dapm: Fix possible uninitialized variable in snd_soc_dapm_get_volsw()
commit 01ad5e7de67b408d9b48b437b06a9938ddf460b5 upstream.
If soc_dapm_read() fails, val will be uninitialized, and bogus values
will be written later:
ret = soc_dapm_read(dapm, reg, &val);
val = (val >> shift) & mask;
However, the compiler does not give a warning. Return on error before
val is really used to avoid this.
This is similar to the commit 6912831623c5 ("ASoC: dapm: Fix
uninitialized variable in snd_soc_dapm_get_enum_double()")
Fixes: ce0fc93ae56e (ASoC: Add DAPM support at the component level)
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/soc-dapm.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index afb70a5d4fd3..b670d212a9c3 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -3015,6 +3015,9 @@ int snd_soc_dapm_get_volsw(struct snd_kcontrol *kcontrol, } mutex_unlock(&card->dapm_mutex); + if (ret) + return ret; + if (invert) ucontrol->value.integer.value[0] = max - val; else |