Re: [PATCH] hwmon: (gpd-fan) Reject EC PWM value 0 as invalid

From: Guenter Roeck

Date: Wed Jun 10 2026 - 09:34:16 EST


On Tue, Jun 09, 2026 at 03:41:35PM +0800, Pei Xiao wrote:
> 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 <xiaopei01@xxxxxxxxxx>
> ---
> drivers/hwmon/gpd-fan.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hwmon/gpd-fan.c b/drivers/hwmon/gpd-fan.c
> index d1993cd645cb..decb61936b95 100644
> --- a/drivers/hwmon/gpd-fan.c
> +++ b/drivers/hwmon/gpd-fan.c
> @@ -341,7 +341,11 @@ static int gpd_wm2_read_pwm(struct gpd_fan_data *data)
>
> gpd_ecram_read(drvdata, drvdata->pwm_write, &var);
>
> - // Match gpd_generic_write_pwm(u8) below
> + /* EC PWM register valid range is 1 ~ pwm_max; 0 is an invalid state */
> + if (unlikely(!var))
> + return -EIO;
> +
> + /* Match gpd_generic_write_pwm() below */

Please do not change to comment format in an existing driver.
This driver uses the C++ comment style.

Thanks,
Guenter

> return DIV_ROUND_CLOSEST((var - 1) * 255, (drvdata->pwm_max - 1));
> }
>