diff --git a/ntoskrnl/include/internal/ke_x.h b/ntoskrnl/include/internal/ke_x.h index 70fa05e1d12..fcf3edb2786 100644 --- a/ntoskrnl/include/internal/ke_x.h +++ b/ntoskrnl/include/internal/ke_x.h @@ -1359,6 +1359,7 @@ KxQueueReadyThread(IN PKTHREAD Thread, /* Sanity checks */ ASSERT(Prcb == KeGetCurrentPrcb()); + ASSERT(Prcb->PrcbLock != 0); ASSERT(Thread->State == Running); ASSERT(Thread->NextProcessor == Prcb->Number); diff --git a/ntoskrnl/ke/arm/thrdini.c b/ntoskrnl/ke/arm/thrdini.c index 190b73f926c..c32b39c392d 100644 --- a/ntoskrnl/ke/arm/thrdini.c +++ b/ntoskrnl/ke/arm/thrdini.c @@ -334,6 +334,9 @@ KiDispatchInterrupt(VOID) } else if (Prcb->NextThread) { + /* Acquire the PRCB lock */ + KiAcquirePrcbLock(Prcb); + /* Capture current thread data */ OldThread = Prcb->CurrentThread; NewThread = Prcb->NextThread; diff --git a/ntoskrnl/ke/i386/thrdini.c b/ntoskrnl/ke/i386/thrdini.c index 3214f560872..91e8ad3931f 100644 --- a/ntoskrnl/ke/i386/thrdini.c +++ b/ntoskrnl/ke/i386/thrdini.c @@ -495,6 +495,9 @@ KiDispatchInterrupt(VOID) } else if (Prcb->NextThread) { + /* Acquire the PRCB lock */ + KiAcquirePrcbLock(Prcb); + /* Capture current thread data */ OldThread = Prcb->CurrentThread; NewThread = Prcb->NextThread;