[PATCH 3/5] platform/x86: hp-wmi: handle errors in the OMEN key event

From: Emre Cecanpunar

Date: Thu Jul 16 2026 - 05:56:14 EST


hp_wmi_read_int() can return a negative error code, but the
HPWMI_OMEN_KEY handler passes it directly to
sparse_keymap_report_event(). The value is then converted to an unsigned
key code, causing a bogus lookup and a KEY_UNKNOWN input event.

Stop processing the event when reading the key code fails, mirroring the
existing check in the HPWMI_BEZEL_BUTTON handler.

Fixes: f4a31a428d0d ("platform/x86: hp-wmi: Add HP Envy special key support")
Signed-off-by: Emre Cecanpunar <emreleno@xxxxxxxxx>
---
drivers/platform/x86/hp/hp-wmi.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/platform/x86/hp/hp-wmi.c b/drivers/platform/x86/hp/hp-wmi.c
index e226b772ef00..29881749aae6 100644
--- a/drivers/platform/x86/hp/hp-wmi.c
+++ b/drivers/platform/x86/hp/hp-wmi.c
@@ -1253,10 +1253,14 @@ static void hp_wmi_notify(union acpi_object *obj, void *context)
platform_profile_cycle();
break;
case HPWMI_OMEN_KEY:
- if (event_data) /* Only should be true for HP Omen */
+ if (event_data) {
+ /* Only should be true for HP Omen */
key_code = event_data;
- else
+ } else {
key_code = hp_wmi_read_int(HPWMI_HOTKEY_QUERY);
+ if (key_code < 0)
+ break;
+ }

if (!sparse_keymap_report_event(hp_wmi_input_dev,
key_code, 1, true))