+sanity-check of the value of 'KeGetCurrentThread()->KernelApcDisable'
authorshort <>
Thu, 16 Jan 2003 03:28:24 +0000 (03:28 +0000)
committershort <>
Thu, 16 Jan 2003 03:28:24 +0000 (03:28 +0000)
KeEnterCriticalRegion() vs. KeLeaveCriticalRegion() now ++/-- by reverse
 - *Enter*() now adds, *Leave*() now subs; why the other way?

ntoskrnl/ke/critical.c

index d6179ab..6ee8326 100644 (file)
 VOID STDCALL KeEnterCriticalRegion (VOID)
 {
    DPRINT("KeEnterCriticalRegion()\n");
-   KeGetCurrentThread()->KernelApcDisable -= 1;
+   if (KeGetCurrentThread()->KernelApcDisable<0)
+      KeBugCheck(0);
+   KeGetCurrentThread()->KernelApcDisable += 1;
 }
 
 VOID STDCALL KeLeaveCriticalRegion (VOID)
 {
    DPRINT("KeLeaveCriticalRegion()\n");
-   KeGetCurrentThread()->KernelApcDisable += 1;
+   if (KeGetCurrentThread()->KernelApcDisable<=0)
+      KeBugCheck(0);
+   KeGetCurrentThread()->KernelApcDisable -= 1;
 }
 
 /* EOF */