From 314e0eaf5953eef81914cb51fc9701fb407a9ce3 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Fri, 17 Jun 2005 00:13:44 +0000 Subject: [PATCH] Fix bug in gate code svn path=/trunk/; revision=15942 --- reactos/ntoskrnl/ke/gate.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/reactos/ntoskrnl/ke/gate.c b/reactos/ntoskrnl/ke/gate.c index 27999148712..dedb00523fa 100644 --- a/reactos/ntoskrnl/ke/gate.c +++ b/reactos/ntoskrnl/ke/gate.c @@ -44,8 +44,8 @@ KeWaitForGate(PKGATE Gate, do { /* Lock the APC Queue */ - KeAcquireSpinLock(&CurrentThread->ApcQueueLock, &OldIrql); - + OldIrql = KeAcquireDispatcherDatabaseLock(); + /* Check if it's already signaled */ if (!Gate->Header.SignalState) { @@ -53,7 +53,7 @@ KeWaitForGate(PKGATE Gate, Gate->Header.SignalState = 0; /* Unlock the Queue and return */ - KeReleaseSpinLock(&CurrentThread->ApcQueueLock, OldIrql); + KeReleaseDispatcherDatabaseLock(OldIrql); return; } @@ -78,9 +78,6 @@ KeWaitForGate(PKGATE Gate, KiWakeQueue(CurrentThread->Queue); } - /* Unlock the Queue*/ - KeReleaseSpinLock(&CurrentThread->ApcQueueLock, OldIrql); - /* Block the Thread */ DPRINT("Blocking the Thread: %x\n", CurrentThread); KiBlockThread(&Status,