Don't use the OldIrql value from fmutex after releasing it.
Modified: trunk/reactos/hal/halx86/generic/fmutex.c
Modified: trunk/reactos/ntoskrnl/ex/fmutex.c
_____
Modified: trunk/reactos/hal/halx86/generic/fmutex.c
--- trunk/reactos/hal/halx86/generic/fmutex.c 2005-11-26 16:08:27 UTC
(rev 19640)
+++ trunk/reactos/hal/halx86/generic/fmutex.c 2005-11-26 16:35:23 UTC
(rev 19641)
@@ -56,8 +56,11 @@
FASTCALL
ExReleaseFastMutex(PFAST_MUTEX FastMutex)
{
+ KIRQL OldIrql;
+
/* Erase the owner */
FastMutex->Owner = (PVOID)1;
+ OldIrql = FastMutex->OldIrql;
/* Increase the count */
if (InterlockedIncrement(&FastMutex->Count) <= 0)
@@ -67,7 +70,7 @@
}
/* Lower IRQL back */
- KfLowerIrql(FastMutex->OldIrql);
+ KfLowerIrql(OldIrql);
}
BOOLEAN
_____
Modified: trunk/reactos/ntoskrnl/ex/fmutex.c
--- trunk/reactos/ntoskrnl/ex/fmutex.c 2005-11-26 16:08:27 UTC (rev
19640)
+++ trunk/reactos/ntoskrnl/ex/fmutex.c 2005-11-26 16:35:23 UTC (rev
19641)
@@ -106,10 +106,12 @@
FASTCALL
ExReleaseFastMutex (PFAST_MUTEX FastMutex)
{
+ KIRQL oldIrql;
ASSERT_IRQL(APC_LEVEL);
/* Erase the owner */
FastMutex->Owner = NULL;
+ OldIrql = FastMutex->OldIrql;
/* Increase the count */
if (InterlockedIncrement(&FastMutex->Count) <= 0)
@@ -119,7 +121,7 @@
}
/* Lower IRQL back */
- KfLowerIrql(FastMutex->OldIrql);
+ KfLowerIrql(OldIrql);
}
/*
Show replies by date