hwmon: (dme1737) fix divide-by-0
authorJuerg Haefliger <juergh@gmail.com>
Mon, 28 Jan 2008 00:39:46 +0000 (16:39 -0800)
committerMark M. Hoffman <mhoffman@lightlink.com>
Fri, 8 Feb 2008 01:39:44 +0000 (20:39 -0500)
This patch fixes a possible divide-by-0 and a minor bug in the
FAN_FROM_REG macro (in TPC mode).

Signed-off-by: Juerg Haefliger <juergh at gmail.com>
Acked-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Mark M. Hoffman <mhoffman@lightlink.com>
drivers/hwmon/dme1737.c

index 85064fb0b7c2b81561efb84a9cb298e5225f2386..307f48de051fda03f0b4fe9f7303817e9b520be3 100644 (file)
@@ -283,14 +283,21 @@ static inline int TEMP_HYST_TO_REG(int val, int ix, int reg)
 /* Fan input RPM */
 static inline int FAN_FROM_REG(int reg, int tpc)
 {
-       return (reg == 0 || reg == 0xffff) ? 0 :
-               (tpc == 0) ? 90000 * 60 / reg : tpc * reg;
+       if (tpc) {
+               return tpc * reg;
+       } else {
+               return (reg == 0 || reg == 0xffff) ? 0 : 90000 * 60 / reg;
+       }
 }
 
 static inline int FAN_TO_REG(int val, int tpc)
 {
-       return SENSORS_LIMIT((tpc == 0) ? 90000 * 60 / val : val / tpc,
-                            0, 0xffff);
+       if (tpc) {
+               return SENSORS_LIMIT(val / tpc, 0, 0xffff);
+       } else {
+               return (val <= 0) ? 0xffff :
+                       SENSORS_LIMIT(90000 * 60 / val, 0, 0xfffe);
+       }
 }
 
 /* Fan TPC (tach pulse count)