From: Pei Xiao Date: Thu, 11 Jun 2026 00:44:14 +0000 (+0800) Subject: hwmon: (gpd-fan) Reject EC PWM value 0 as invalid X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=69cbfd708884fa71a1c2353c07ecd8e646bd43a0;p=thirdparty%2Flinux.git hwmon: (gpd-fan) Reject EC PWM value 0 as invalid The EC firmware is expected to return values in [1, pwm_max]. A read of 0 is illegal and would cause underflow in the conversion formula. Explicitly check for 0 and return -EIO. Signed-off-by: Pei Xiao Link: https://lore.kernel.org/r/1c2ffa0d832ae3a74f6d4ffa7cc7b7e6cced69e3.1781138459.git.xiaopei01@kylinos.cn Signed-off-by: Guenter Roeck --- diff --git a/drivers/hwmon/gpd-fan.c b/drivers/hwmon/gpd-fan.c index d1993cd645cbc..ed212615b2fe9 100644 --- a/drivers/hwmon/gpd-fan.c +++ b/drivers/hwmon/gpd-fan.c @@ -341,6 +341,10 @@ static int gpd_wm2_read_pwm(struct gpd_fan_data *data) gpd_ecram_read(drvdata, drvdata->pwm_write, &var); + // EC PWM register valid range is 1 ~ pwm_max; 0 is an invalid state + if (unlikely(!var)) + return -EIO; + // Match gpd_generic_write_pwm(u8) below return DIV_ROUND_CLOSEST((var - 1) * 255, (drvdata->pwm_max - 1)); }