Commit 6912831623c5bbd38c6c26039d5f821557e5f541

Authored by Geert Uytterhoeven
Committed by Mark Brown
1 parent ae34a78c43

ASoC: dapm: Fix uninitialized variable in snd_soc_dapm_get_enum_double()

If soc_dapm_read() fails, reg_val will be uninitialized, and bogus
values will be written later:

sound/soc/soc-dapm.c: In function 'snd_soc_dapm_get_enum_double':
sound/soc/soc-dapm.c:2862:15: warning: 'reg_val' may be used uninitialized in this function [-Wmaybe-uninitialized]
  unsigned int reg_val, val;
               ^

Return early on error to fix this.

Introduced by commit ce0fc93ae56e2ba50ff8c220d69e4e860e889320 ("ASoC:
Add DAPM support at the component level").

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Mark Brown <broonie@linaro.org>
Acked-by: Lars-Peter Clausen <lars@metafoo.de>

Showing 1 changed file with 7 additions and 5 deletions Side-by-side Diff

sound/soc/soc-dapm.c
... ... @@ -2860,12 +2860,14 @@
2860 2860 struct snd_soc_dapm_context *dapm = snd_soc_dapm_kcontrol_dapm(kcontrol);
2861 2861 struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
2862 2862 unsigned int reg_val, val;
2863   - int ret = 0;
2864 2863  
2865   - if (e->reg != SND_SOC_NOPM)
2866   - ret = soc_dapm_read(dapm, e->reg, &reg_val);
2867   - else
  2864 + if (e->reg != SND_SOC_NOPM) {
  2865 + int ret = soc_dapm_read(dapm, e->reg, &reg_val);
  2866 + if (ret)
  2867 + return ret;
  2868 + } else {
2868 2869 reg_val = dapm_kcontrol_get_value(kcontrol);
  2870 + }
2869 2871  
2870 2872 val = (reg_val >> e->shift_l) & e->mask;
2871 2873 ucontrol->value.enumerated.item[0] = snd_soc_enum_val_to_item(e, val);
... ... @@ -2875,7 +2877,7 @@
2875 2877 ucontrol->value.enumerated.item[1] = val;
2876 2878 }
2877 2879  
2878   - return ret;
  2880 + return 0;
2879 2881 }
2880 2882 EXPORT_SYMBOL_GPL(snd_soc_dapm_get_enum_double);
2881 2883