Re: [PATCH] platform/x86: hp-wmi: handle positive BIOS error codes

Yousef Alhouseen <[email protected]> Thu, 30 Jul 2026 15:08:52 -0700
Newsgroups org.kernel.vger.platform-driver-x86,org.kernel.vger.linux-kernel
Message-ID <CAMuQ4bWWBKMD_XcaN_GB+MZQ-KdLYprqD0eKAB3K=UZTZWE57g@mail.gmail.com>
Hi Ilpo,

No specific hardware exhibited this; I found it by static inspection.
hp_wmi_perform_query() documents positive BIOS error returns, while
victus_s_gpu_thermal_profile_get() only initializes its output
arguments when the return is zero, so these two ret < 0 checks can
consume uninitialized values on a positive return.

I only ran strict checkpatch and a focused Clang build of hp-wmi.o. I
do not have a Victus S system to reproduce it. If hardware validation
is required for this change, I am happy to withdraw it.

Regards,
Yousef

On Tue, 21 Jul 2026 20:28:38 +0300 (EEST), "Ilpo J=C3=A4rvinen"
<[email protected]> wrote:
> On Tue, 30 Jun 2026, Yousef Alhouseen wrote:
>
> > hp_wmi_perform_query() returns firmware BIOS error codes as positive
> > values. The Victus-S profile callers only reject negative errors, then
> > consume output fields that are not filled for a positive firmware error=
.
>
> On which hw you see this? Please add the info.
>
> > Treat every nonzero result from victus_s_gpu_thermal_profile_get()
> > as a failed query before using its outputs.
> >
> > Signed-off-by: Yousef Alhouseen <[email protected]>
> > ---
> > drivers/platform/x86/hp/hp-wmi.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp=
/hp-wmi.c
> > index 8ba286ed8721..50c5a1e152dd 100644
> > --- a/drivers/platform/x86/hp/hp-wmi.c
> > +++ b/drivers/platform/x86/hp/hp-wmi.c
> > @@ -1825,7 +1825,7 @@ static int victus_s_gpu_thermal_profile_set(bool =
ctgp_enable,
> > &current_ppab_state,
> > &current_dstate,
> > &current_gpu_slowdown_temp);
> > - if (ret < 0) {
> > + if (ret) {
> > pr_warn("GPU modes not updated, unable to get slowdown temp\n");
> > return ret;
> > }
> > @@ -1907,7 +1907,7 @@ static int platform_profile_victus_s_get_ec(enum =
platform_profile_option *profil
> > &current_ppab_state,
> > &current_dstate,
> > &current_gpu_slowdown_temp);
> > - if (ret < 0)
> > + if (ret)
> > return ret;
> > if (current_ctgp_state =3D=3D 0 && current_ppab_state =3D=3D 0)
> > *profile =3D PLATFORM_PROFILE_LOW_POWER;
> >
>
> --
> i.