it87: Prevent overflow on fan clock divider write
authorJean Delvare <khali@linux-fr.org>
Mon, 28 Aug 2006 12:26:22 +0000 (14:26 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 28 Sep 2006 22:31:13 +0000 (15:31 -0700)
it87: Prevent overflow on fan clock divider write

The highest possible clock divider for fan1 and fan2 is 128.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/hwmon/it87.c

index 0317e441ca51d88f5351d0d4b5566f2753366fcc..fc75fcb6bffdb0bd543ea24e0bdfbb67bdf859be 100644 (file)
@@ -198,7 +198,7 @@ static inline u16 FAN16_TO_REG(long rpm)
 static int DIV_TO_REG(int val)
 {
        int answer = 0;
-       while ((val >>= 1) != 0)
+       while (answer < 7 && (val >>= 1))
                answer++;
        return answer;
 }
@@ -563,7 +563,7 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr,
 
        struct i2c_client *client = to_i2c_client(dev);
        struct it87_data *data = i2c_get_clientdata(client);
-       int val = simple_strtol(buf, NULL, 10);
+       unsigned long val = simple_strtoul(buf, NULL, 10);
        int i, min[3];
        u8 old;