From f944f3a6cdae3a09c21d18a7924eb3beb4ee584f Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Thu, 30 May 2019 15:44:56 +0200 Subject: [PATCH] [NTOS] In KeWaitFor*Object(s) assert that the current IRQL is SYNCH_LEVEL. not DISPATCH_LEVEL, since acquiring the dispatcher lock raises to SYNCH_LEVEL, which is != DISPATCH_LEVEL on x64 and SMP builds. --- ntoskrnl/ke/wait.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ntoskrnl/ke/wait.c b/ntoskrnl/ke/wait.c index ed81484ab3e..bae1e8fcd60 100644 --- a/ntoskrnl/ke/wait.c +++ b/ntoskrnl/ke/wait.c @@ -431,7 +431,7 @@ KeWaitForSingleObject(IN PVOID Object, ULONG Hand = 0; if (Thread->WaitNext) - ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); + ASSERT(KeGetCurrentIrql() == SYNCH_LEVEL); else ASSERT(KeGetCurrentIrql() < DISPATCH_LEVEL || (KeGetCurrentIrql() == DISPATCH_LEVEL && @@ -604,7 +604,7 @@ KeWaitForMultipleObjects(IN ULONG Count, ULONG Index, Hand = 0; if (Thread->WaitNext) - ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); + ASSERT(KeGetCurrentIrql() == SYNCH_LEVEL); else if (KeGetCurrentIrql() == DISPATCH_LEVEL && (!Timeout || Timeout->QuadPart != 0)) {