| From 2a8adb4c41ebbee15314a508a25027c7959d42c5 Mon Sep 17 00:00:00 2001 |
| From: Yizhuo <yzhai003@ucr.edu> |
| Date: Sun, 29 Sep 2019 10:09:57 -0700 |
| Subject: [PATCH] regulator: pfuze100-regulator: Variable "val" in |
| pfuze100_regulator_probe() could be uninitialized |
| |
| commit 1252b283141f03c3dffd139292c862cae10e174d upstream. |
| |
| In function pfuze100_regulator_probe(), variable "val" could be |
| initialized if regmap_read() fails. However, "val" is used to |
| decide the control flow later in the if statement, which is |
| potentially unsafe. |
| |
| Signed-off-by: Yizhuo <yzhai003@ucr.edu> |
| Link: https://lore.kernel.org/r/20190929170957.14775-1-yzhai003@ucr.edu |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c |
| index df5df1c495ad..689537927f6f 100644 |
| --- a/drivers/regulator/pfuze100-regulator.c |
| +++ b/drivers/regulator/pfuze100-regulator.c |
| @@ -788,7 +788,13 @@ static int pfuze100_regulator_probe(struct i2c_client *client, |
| |
| /* SW2~SW4 high bit check and modify the voltage value table */ |
| if (i >= sw_check_start && i <= sw_check_end) { |
| - regmap_read(pfuze_chip->regmap, desc->vsel_reg, &val); |
| + ret = regmap_read(pfuze_chip->regmap, |
| + desc->vsel_reg, &val); |
| + if (ret) { |
| + dev_err(&client->dev, "Fails to read from the register.\n"); |
| + return ret; |
| + } |
| + |
| if (val & sw_hi) { |
| if (pfuze_chip->chip_id == PFUZE3000 || |
| pfuze_chip->chip_id == PFUZE3001) { |
| -- |
| 2.7.4 |
| |