diff --git a/ntoskrnl/mm/ARM3/pool.c b/ntoskrnl/mm/ARM3/pool.c index 7c0e1bb93ba..9490f326874 100644 --- a/ntoskrnl/mm/ARM3/pool.c +++ b/ntoskrnl/mm/ARM3/pool.c @@ -849,6 +849,19 @@ MiAllocatePoolPages(IN POOL_TYPE PoolType, // MiAcquirePfnLockAtDpcLevel(); + /* Check that we have enough available pages for this request */ + if (MmAvailablePages < SizeInPages) + { + MiReleasePfnLockFromDpcLevel(); + KeReleaseQueuedSpinLock(LockQueueMmNonPagedPoolLock, OldIrql); + + MiReleaseSystemPtes(StartPte, SizeInPages, NonPagedPoolExpansion); + + DPRINT1("OUT OF AVAILABLE PAGES! Required %lu, Available %lu\n", SizeInPages, MmAvailablePages); + + return NULL; + } + // // Loop the pages //