Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75311bea authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (acpi_power_meter) Fix unintentional integer overflow



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: default avatarGuenter Roeck <linux@roeck-us.net>
Acked-by: default avatarJean Delvare <khali@linux-fr.org>
parent 27c4db39
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -101,7 +101,7 @@ struct acpi_power_meter_resource {
	unsigned long		sensors_last_updated;
	unsigned long		sensors_last_updated;
	struct sensor_device_attribute	sensors[NUM_SENSORS];
	struct sensor_device_attribute	sensors[NUM_SENSORS];
	int			num_sensors;
	int			num_sensors;
	int			trip[2];
	s64			trip[2];
	int			num_domain_devices;
	int			num_domain_devices;
	struct acpi_device	**domain_devices;
	struct acpi_device	**domain_devices;
	struct kobject		*holders_dir;
	struct kobject		*holders_dir;
@@ -308,8 +308,6 @@ static ssize_t set_trip(struct device *dev, struct device_attribute *devattr,
		return res;
		return res;


	temp = DIV_ROUND_CLOSEST(temp, 1000);
	temp = DIV_ROUND_CLOSEST(temp, 1000);
	if (temp > INT_MAX)
		return -EINVAL;


	mutex_lock(&resource->lock);
	mutex_lock(&resource->lock);
	resource->trip[attr->index - 7] = temp;
	resource->trip[attr->index - 7] = temp;