hwmon: (acpi_power_meter) Fix unintentional integer overflow
authorGuenter Roeck <linux@roeck-us.net>
Thu, 21 Jun 2012 13:21:05 +0000 (06:21 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 22 Jul 2012 04:48:44 +0000 (21:48 -0700)
Expression with two integer variables is calculated as integer before it is
converted to u64. This may result in an integer overflow. Fix by declaring
trip point variables as s64 instead of int.

This patch addresses Coverity #200596: Unintentional integer overflow.

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

index 9a0821f..5363da5 100644 (file)
@@ -101,7 +101,7 @@ struct acpi_power_meter_resource {
        unsigned long           sensors_last_updated;
        struct sensor_device_attribute  sensors[NUM_SENSORS];
        int                     num_sensors;
-       int                     trip[2];
+       s64                     trip[2];
        int                     num_domain_devices;
        struct acpi_device      **domain_devices;
        struct kobject          *holders_dir;
@@ -308,8 +308,6 @@ static ssize_t set_trip(struct device *dev, struct device_attribute *devattr,
                return res;
 
        temp = DIV_ROUND_CLOSEST(temp, 1000);
-       if (temp > INT_MAX)
-               return -EINVAL;
 
        mutex_lock(&resource->lock);
        resource->trip[attr->index - 7] = temp;