mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 23:09:29 +02:00
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:
committed by
Guenter Roeck
parent
fb564622ec
commit
53a945a89d
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user