From eed81bebcbec88ba7c20f30a8275cccda119d9e0 Mon Sep 17 00:00:00 2001 From: Stephen Miller Date: Sun, 2 Feb 2025 14:46:05 -0600 Subject: [PATCH] Fix? Seems like `static_cast(hint) & 0xFF == event.ident` here, and doing those right shifts on the event.ident winds up breaking stuff. Without this change, the if always fails because event_id was getting set to 0 instead. --- src/core/libraries/kernel/equeue.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/libraries/kernel/equeue.h b/src/core/libraries/kernel/equeue.h index ad88ed755..11c09bb37 100644 --- a/src/core/libraries/kernel/equeue.h +++ b/src/core/libraries/kernel/equeue.h @@ -86,10 +86,9 @@ struct EqueueEvent { is_triggered = true; auto hint = reinterpret_cast(data); if (hint != 0) { - auto event_id = event.ident >> 48; auto hint_h = static_cast(hint >> 8) & 0xFFFFFF; auto ident_h = static_cast(event.ident >> 40); - if ((static_cast(hint) & 0xFF) == event_id && event_id != 0xFE && + if ((static_cast(hint) & 0xFF) == event.ident && event.ident != 0xFE && ((hint_h ^ ident_h) & 0xFF) == 0) { auto time = Common::FencedRDTSC(); auto mask = 0xF000;