https://git.reactos.org/?p=reactos.git;a=commitdiff;h=41de1bd7241f3ce1b2020259161e534f1efa6433

commit 41de1bd7241f3ce1b2020259161e534f1efa6433
Author:     Jérôme Gardou <jerome.gar...@reactos.org>
AuthorDate: Fri May 21 09:41:27 2021 +0200
Commit:     Jérôme Gardou <zefk...@users.noreply.github.com>
CommitDate: Mon Jun 21 11:42:01 2021 +0200

    [NTOS:KE] Do not allow waiting at IRQL >= DISPATCH_LEVEL when providing a 
timeout in KeWaitForMultipleObjects
    
    CORE-6473
---
 ntoskrnl/ke/wait.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/ntoskrnl/ke/wait.c b/ntoskrnl/ke/wait.c
index 3863b8e4779..26869fdd7de 100644
--- a/ntoskrnl/ke/wait.c
+++ b/ntoskrnl/ke/wait.c
@@ -605,12 +605,9 @@ KeWaitForMultipleObjects(IN ULONG Count,
 
     if (Thread->WaitNext)
         ASSERT(KeGetCurrentIrql() == SYNCH_LEVEL);
-    else if (KeGetCurrentIrql() == DISPATCH_LEVEL &&
-             (!Timeout || Timeout->QuadPart != 0))
+    else if (!Timeout || (Timeout->QuadPart != 0))
     {
-        /* HACK: tcpip is broken and waits with spinlocks acquired (CORE-6473) 
*/
-        DPRINT("%s called at DISPATCH_LEVEL with non-zero timeout!\n",
-               __FUNCTION__);
+        ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
     }
     else
         ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);

Reply via email to