hwmon: (acpi_power_meter) Cleanup and optimizations
authorGuenter Roeck <linux@roeck-us.net>
Tue, 19 Jun 2012 05:37:13 +0000 (22:37 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 22 Jul 2012 04:48:44 +0000 (21:48 -0700)
An unsigned value can not be smaller than 0. Remove the check for it.
Use DIV_ROUND_CLOSEST for divide operations converting milli-degrees C into
degrees C. Limit maximum accepted trip point temperature to INT_MAX.

This patch fixes Coverity #115214: Unsigned compared against 0

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Jean Delvare <khali@linux-fr.org>
drivers/hwmon/acpi_power_meter.c

index 34ad5a2..9a0821f 100644 (file)
@@ -237,7 +237,7 @@ static ssize_t set_cap(struct device *dev, struct device_attribute *devattr,
        if (res)
                return res;
 
-       temp /= 1000;
+       temp = DIV_ROUND_CLOSEST(temp, 1000);
        if (temp > resource->caps.max_cap || temp < resource->caps.min_cap)
                return -EINVAL;
        arg0.integer.value = temp;
@@ -307,8 +307,8 @@ static ssize_t set_trip(struct device *dev, struct device_attribute *devattr,
        if (res)
                return res;
 
-       temp /= 1000;
-       if (temp < 0)
+       temp = DIV_ROUND_CLOSEST(temp, 1000);
+       if (temp > INT_MAX)
                return -EINVAL;
 
        mutex_lock(&resource->lock);