summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/rt274.c
diff options
context:
space:
mode:
authorYizhuo <yzhai003@ucr.edu>2019-01-07 12:12:32 -0800
committerMark Brown <broonie@kernel.org>2019-01-08 13:05:48 +0000
commit4a8191aa9e057ea38279ef9e809265ba3966be40 (patch)
tree7baa4428e79a474db5997f01e8d3b1ed4b226f74 /sound/soc/codecs/rt274.c
parent7b57085a33ce55e28616f04fd9877ba2ca7e79de (diff)
downloadlinux-4a8191aa9e057ea38279ef9e809265ba3966be40.tar.bz2
ASoC: rt274: Variable "buf" in function rt274_jack_detect() could be uninitialized
In function rt274_jack_detect(), local variable "buf" could be uninitialized if function regmap_read() returns -EINVAL. However, it will be used to calculate "hp" and "mic" and make their value unpredictable while those value are used in the caller. This is potentially unsafe. Signed-off-by: Yizhuo <yzhai003@ucr.edu> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/codecs/rt274.c')
-rw-r--r--sound/soc/codecs/rt274.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sound/soc/codecs/rt274.c b/sound/soc/codecs/rt274.c
index 9e88f7b25d38..adf59039a3b6 100644
--- a/sound/soc/codecs/rt274.c
+++ b/sound/soc/codecs/rt274.c
@@ -353,6 +353,7 @@ static void rt274_index_sync(struct snd_soc_component *component)
static int rt274_jack_detect(struct rt274_priv *rt274, bool *hp, bool *mic)
{
unsigned int buf;
+ int ret;
*hp = false;
*mic = false;
@@ -360,9 +361,15 @@ static int rt274_jack_detect(struct rt274_priv *rt274, bool *hp, bool *mic)
if (!rt274->component)
return -EINVAL;
- regmap_read(rt274->regmap, RT274_GET_HP_SENSE, &buf);
+ ret = regmap_read(rt274->regmap, RT274_GET_HP_SENSE, &buf);
+ if (ret)
+ return ret;
+
*hp = buf & 0x80000000;
- regmap_read(rt274->regmap, RT274_GET_MIC_SENSE, &buf);
+ ret = regmap_read(rt274->regmap, RT274_GET_MIC_SENSE, &buf);
+ if (ret)
+ return ret;
+
*mic = buf & 0x80000000;
pr_debug("*hp = %d *mic = %d\n", *hp, *mic);