From: Guenter Roeck Date: Wed, 30 Jul 2014 03:48:59 +0000 (-0700) Subject: hwmon: (lm78) Fix overflow problems seen when writing large temperature limits X-Git-Tag: v3.2.63~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=48371f90fbbc3aec891825ad3242d7ef723802b7;p=thirdparty%2Fkernel%2Fstable.git hwmon: (lm78) Fix overflow problems seen when writing large temperature limits commit 1074d683a51f1aded3562add9ef313e75d557327 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. Cc: Axel Lin Reviewed-by: Axel Lin Signed-off-by: Guenter Roeck [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings --- diff --git a/drivers/hwmon/lm78.c b/drivers/hwmon/lm78.c index a42a7b0cd8eb3..5ce5d5a88c033 100644 --- a/drivers/hwmon/lm78.c +++ b/drivers/hwmon/lm78.c @@ -102,7 +102,7 @@ static inline int FAN_FROM_REG(u8 val, int div) /* TEMP: mC (-128C to +127C) REG: 1C/bit, two's complement */ -static inline s8 TEMP_TO_REG(int val) +static inline s8 TEMP_TO_REG(long val) { int nval = SENSORS_LIMIT(val, -128000, 127000) ; return nval<0 ? (nval-500)/1000 : (nval+500)/1000;