- Don't change page protection while the memory area is being deleted
svn path=/trunk/; revision=54761
MmLockAddressSpace(AddressSpace);
MemoryArea = MmLocateMemoryAreaByAddress(AddressSpace, *BaseAddress);
- if (MemoryArea == NULL)
+ if (MemoryArea == NULL || MemoryArea->DeleteInProgress)
{
MmUnlockAddressSpace(AddressSpace);
return STATUS_UNSUCCESSFUL;
}
}
+ /* There must be no page ops in progress */
+ ASSERT(MemoryArea->PageOpCount == 0);
+
/* Remove the tree item. */
{
if (MemoryArea->Parent != NULL)
Address = (PVOID)PAGE_ROUND_DOWN(Address);
Offset = PAGE_ROUND_DOWN(Offset);
+ /* Making a page op during marea destruction is illegal */
+ ASSERT(!MArea->DeleteInProgress);
+
/*
* Calcuate the hash value for pageop structure
*/