The function tmp51x_get_value returns processed values of the TMP513 device registers. Raw register values are converted to signed integer values by sign extension in accordance with the algorithm provided in the specification, but due to the off-by-one error in the sign bit index, the result is incorrect. There are also some other mistakes, such as incorrect cast. Changes introduced by these patches are based on the TMP512/TMP513 datasheets that are specified in Documentation/hwmon/tmp513.rst. They have not actually been tested in any real or virtual environment. However the calculations have been tested separately to make sure they work as expected. Found by Linux Verification Center (linuxtesting.org) with SVACE. Murad Masimov (3): hwmon: (tmp513) Fix interpretation of values of Shunt Voltage and Limit Registers hwmon: (tmp513) Fix Current Register value interpretation hwmon: (tmp513) Fix interpretation of values of Temperature Result and Limit Registers drivers/hwmon/tmp513.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) -- 2.39.2