diff mbox series

[1/2] hwmon: chipcap2: fix uninitialized variable in cc2_get_reg_val()

Message ID 20240207-chipcap2_init_vars-v1-1-08cafe43e20e@gmail.com (mailing list archive)
State Accepted
Headers show
Series hwmon: chipcap2: fix uninitialized symbols | expand

Commit Message

Javier Carrasco Feb. 7, 2024, 9:17 p.m. UTC
The reg_val variable in cc2_get_reg_val() might be used without a known
value if cc2_read_reg() fails. That leads to a useless data conversion
because the returned error means the read operation failed and the data is
not relevant.

That makes its initial value irrelevant as well, so skip the data
conversion instead. If no error happens, a value is assigned to reg_val
and the data conversion is required.

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/linux-hwmon/294e4634-89d4-415e-a723-b208d8770d7c@gmail.com/T/#t
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
 drivers/hwmon/chipcap2.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Guenter Roeck Feb. 7, 2024, 9:31 p.m. UTC | #1
On Wed, Feb 07, 2024 at 10:17:08PM +0100, Javier Carrasco wrote:
> The reg_val variable in cc2_get_reg_val() might be used without a known
> value if cc2_read_reg() fails. That leads to a useless data conversion
> because the returned error means the read operation failed and the data is
> not relevant.
> 
> That makes its initial value irrelevant as well, so skip the data
> conversion instead. If no error happens, a value is assigned to reg_val
> and the data conversion is required.
> 
> Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
> Closes: https://lore.kernel.org/linux-hwmon/294e4634-89d4-415e-a723-b208d8770d7c@gmail.com/T/#t
> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>

Applied.

Thanks,
Guenter
diff mbox series

Patch

diff --git a/drivers/hwmon/chipcap2.c b/drivers/hwmon/chipcap2.c
index a62c507b1042..3b604fc5d8ae 100644
--- a/drivers/hwmon/chipcap2.c
+++ b/drivers/hwmon/chipcap2.c
@@ -324,7 +324,9 @@  static int cc2_get_reg_val(struct cc2_data *data, u8 reg, long *val)
 	int ret;
 
 	ret = cc2_read_reg(data, reg, &reg_val);
-	*val = cc2_rh_convert(reg_val);
+	if (!ret)
+		*val = cc2_rh_convert(reg_val);
+
 	cc2_disable(data);
 
 	return ret;