From ba3759fb6b4bd83039d30deee8874c479a8f38d8 Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Sun, 30 Mar 2014 21:10:04 +0000 Subject: [PATCH] [NTOS:KE] - Verify valid IRQL in KeDelayExecutionThread, just like in KeWait* - Return from KeDelayExecutionThread after yielding execution svn path=/trunk/; revision=62590 --- reactos/ntoskrnl/ke/wait.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/reactos/ntoskrnl/ke/wait.c b/reactos/ntoskrnl/ke/wait.c index 2a24c006b2f..c7bfa3eb458 100644 --- a/reactos/ntoskrnl/ke/wait.c +++ b/reactos/ntoskrnl/ke/wait.c @@ -285,6 +285,11 @@ KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, LARGE_INTEGER DueTime, NewDueTime, InterruptTime; ULONG Hand = 0; + if (Thread->WaitNext) + ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL); + else + ASSERT(KeGetCurrentIrql() <= APC_LEVEL); + /* If this is a user-mode wait of 0 seconds, yield execution */ if (!(Interval->QuadPart) && (WaitMode != KernelMode)) { @@ -292,7 +297,7 @@ KeDelayExecutionThread(IN KPROCESSOR_MODE WaitMode, if (!(Alertable) && !(Thread->ApcState.UserApcPending)) { /* Yield execution */ - NtYieldExecution(); + return NtYieldExecution(); } } -- 2.17.1