hwmon: (sis5595) Prevent overflow problem when writing large limits
authorAxel Lin <axel.lin@ingics.com>
Thu, 31 Jul 2014 14:27:04 +0000 (22:27 +0800)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 13 Sep 2014 22:41:43 +0000 (23:41 +0100)
commit cc336546ddca8c22de83720632431c16a5f9fe9a upstream.

On platforms with sizeof(int) < sizeof(long), writing a temperature
limit larger than MAXINT will result in unpredictable limit values
written to the chip. Avoid auto-conversion from long to int to fix
the problem.

Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
drivers/hwmon/sis5595.c

index 5ab6953d42743506a3fbfce8bf8047df850f6787..029a2e15a9c2958ea7514199a065e5dddadbd02f 100644 (file)
@@ -149,7 +149,7 @@ static inline int TEMP_FROM_REG(s8 val)
 {
        return val * 830 + 52120;
 }
-static inline s8 TEMP_TO_REG(int val)
+static inline s8 TEMP_TO_REG(long val)
 {
        int nval = SENSORS_LIMIT(val, -54120, 157530) ;
        return nval<0 ? (nval-5212-415)/830 : (nval-5212+415)/830;