Re: [PATCH] platform/x86: alienware-wmi-wmax: Fix uninitialized variable due to bad error handling

From: Ilpo Järvinen
Date: Thu Apr 17 2025 - 06:57:33 EST


On Wed, 16 Apr 2025, Kurt Borja wrote:

> wmax_thermal_information() may also return -ENOMSG, which would leave
> `id` uninitialized in thermal_profile_probe.
>
> Reorder and modify logic to catch all errors.
>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> Closes: https://lore.kernel.org/r/Z_-KVqNbD9ygvE2X@stanley.mountain
> Fixes: 27e9e6339896 ("platform/x86: alienware-wmi: Refactor thermal control methods")
> Signed-off-by: Kurt Borja <kuurtb@xxxxxxxxx>
> ---
> Hi all,
>
> @Ilpo: This will definitely conflict with the for-next branch when
> merging.

Okay, thanks for the heads up (I'll eventually merge fixes into for-next
once I merge this fix).

> Also, the fixes tag references a commit from before the split (same
> series though), but ofc this fix is meant to be applied on top of it
> (fixes branch). Is this ok or would it be better to change the fixes
> tag to the "split" commit?

Pointing to the correct commit is preferred.

It doesn't look very likely that the series would be "split" such that
only a part of it appears in a specific stable kernel so the difference
shouldn't matter anyway.

In general, stable people would just send you a notification if something
cannot be backported to some stable version due to a conflict, and they'd
depend on you to submit the amended backport anyway so it's not much extra
"work" for them if something ends up conflicting. (And I don't think your
inbox would be exactly filling from stable notifications unlike mine ---
one of those joys of being a subsystem maintainer).

--
i.

> ---
> drivers/platform/x86/dell/alienware-wmi-wmax.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/platform/x86/dell/alienware-wmi-wmax.c b/drivers/platform/x86/dell/alienware-wmi-wmax.c
> index 3d3014b5adf046c94c1ebf39a0e28a92622b40d6..b8e71f06fdde347573bff5c27a9ba53a0efcacae 100644
> --- a/drivers/platform/x86/dell/alienware-wmi-wmax.c
> +++ b/drivers/platform/x86/dell/alienware-wmi-wmax.c
> @@ -607,12 +607,10 @@ static int thermal_profile_probe(void *drvdata, unsigned long *choices)
> for (u32 i = 0; i < sys_desc[3]; i++) {
> ret = wmax_thermal_information(priv->wdev, WMAX_OPERATION_LIST_IDS,
> i + first_mode, &out_data);
> -
> - if (ret == -EIO)
> - return ret;
> -
> if (ret == -EBADRQC)
> break;
> + if (ret)
> + return ret;
>
> if (!is_wmax_thermal_code(out_data))
> continue;
>
> ---
> base-commit: fcf27a6a926fd9eeba39e9c3fde43c9298fe284e
> change-id: 20250416-smatch-fix-d1191e2514f5
>
> Best regards,
>