diff options
author | Chen-Yu Tsai <wens@csie.org> | 2016-08-27 13:27:58 +0200 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-09-01 22:05:18 +0200 |
commit | 01ad5e7de67b408d9b48b437b06a9938ddf460b5 (patch) | |
tree | 141cab32d6e0b1c0b19d4f82c0ee6a907befc656 /sound/soc | |
parent | ASoC: dapm: Add a dummy snd_pcm_runtime to avoid NULL pointer access (diff) | |
download | linux-01ad5e7de67b408d9b48b437b06a9938ddf460b5.tar.xz linux-01ad5e7de67b408d9b48b437b06a9938ddf460b5.zip |
ASoC: dapm: Fix possible uninitialized variable in snd_soc_dapm_get_volsw()
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>
Diffstat (limited to 'sound/soc')
-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 d908ff8f9755..edff395faccf 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c @@ -3049,6 +3049,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 |