hwmon: (tps23861) Fix reporting of negative temperatures

Negative temperatures are reported as large positive temperatures
due to missing sign extension from unsigned int to long. Cast unsigned
raw register values to signed before performing the calculations
to fix the problem.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: fff7b8ab22 ("hwmon: add Texas Instruments TPS23861 driver")
Signed-off-by: Murad Masimov <m.masimov@maxima.ru>
Message-ID: <20241121173604.2021-1-m.masimov@maxima.ru>
[groeck: Updated subject and description]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Murad Masimov 2024-11-21 20:36:03 +03:00 committed by Guenter Roeck
parent 8281d62790
commit de2bf507fa

View File

@ -132,7 +132,7 @@ static int tps23861_read_temp(struct tps23861_data *data, long *val)
if (err < 0)
return err;
*val = (regval * TEMPERATURE_LSB) - 20000;
*val = ((long)regval * TEMPERATURE_LSB) - 20000;
return 0;
}