hwmon: (cros_ec) Avoid threshold temperature conversion overflows

If the EC returns non-sensical values the temperature conversions might
overflow on 32-bit systems.

As these values wouldn't make sense, clamp them to 255 degrees celsius.
The machine would die before reaching that limit anyways.

Suggested-by: Guenter Roeck <linux@roeck-us.net>
Link: https://lore.kernel.org/lkml/0fbf7f69-bb90-4209-b9d5-258759711496@roeck-us.net/
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Link: https://lore.kernel.org/r/20260730-cros_ec-hwmon-overflow-v3-1-c7198ba034ad@weissschuh.net
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Thomas Weißschuh
2026-08-10 08:59:43 -07:00
committed by Guenter Roeck
parent fb564622ec
commit 53a945a89d
+7 -2
View File
@@ -236,8 +236,13 @@ static int cros_ec_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
ret = cros_ec_hwmon_read_temp_threshold(priv->cros_ec, channel,
cros_ec_hwmon_attr_to_thres(attr),
&threshold);
if (ret == 0)
*val = cros_ec_hwmon_kelvin_to_millicelsius(threshold);
if (ret == 0) {
/* Limit to sensible, non-overflowing values. */
if (threshold > 255 + 273)
*val = 255000;
else
*val = cros_ec_hwmon_kelvin_to_millicelsius(threshold);
}
}
}