Commit 6912831623c5bbd38c6c26039d5f821557e5f541
Committed by
Mark Brown
1 parent
ae34a78c43
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
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, ®_val); | |
2867 | - else | |
2864 | + if (e->reg != SND_SOC_NOPM) { | |
2865 | + int ret = soc_dapm_read(dapm, e->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 |