diff options
author | Jean Delvare <khali@linux-fr.org> | 2006-08-28 08:26:22 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-09-28 18:31:13 -0400 |
commit | b9e349f710376ef55f200e9fa07e88b4fe2cdf98 (patch) | |
tree | 221fe66ca1b1fe93ed1e9cf7b9fa988779d22a11 /drivers/hwmon | |
parent | 9060f8bdd0c40e31d2be388e59f2dbeea55988a2 (diff) |
it87: Prevent overflow on fan clock divider write
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>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/it87.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/hwmon/it87.c b/drivers/hwmon/it87.c index 0317e441ca51..fc75fcb6bffd 100644 --- a/drivers/hwmon/it87.c +++ b/drivers/hwmon/it87.c | |||
@@ -198,7 +198,7 @@ static inline u16 FAN16_TO_REG(long rpm) | |||
198 | static int DIV_TO_REG(int val) | 198 | static int DIV_TO_REG(int val) |
199 | { | 199 | { |
200 | int answer = 0; | 200 | int answer = 0; |
201 | while ((val >>= 1) != 0) | 201 | while (answer < 7 && (val >>= 1)) |
202 | answer++; | 202 | answer++; |
203 | return answer; | 203 | return answer; |
204 | } | 204 | } |
@@ -563,7 +563,7 @@ static ssize_t set_fan_div(struct device *dev, struct device_attribute *attr, | |||
563 | 563 | ||
564 | struct i2c_client *client = to_i2c_client(dev); | 564 | struct i2c_client *client = to_i2c_client(dev); |
565 | struct it87_data *data = i2c_get_clientdata(client); | 565 | struct it87_data *data = i2c_get_clientdata(client); |
566 | int val = simple_strtol(buf, NULL, 10); | 566 | unsigned long val = simple_strtoul(buf, NULL, 10); |
567 | int i, min[3]; | 567 | int i, min[3]; |
568 | u8 old; | 568 | u8 old; |
569 | 569 | ||