- Gracefully handle failure to obtain virtual memory when creating a VACB. We now no longer crash when running out of virtual memory during (large) file operations (but will still crash when running out of physical memory).
CORE-11533
svn path=/trunk/; revision=72164
MmUnlockAddressSpace(MmGetKernelAddressSpace());
if (!NT_SUCCESS(Status))
{
- KeBugCheck(CACHE_MANAGER);
+ DPRINT1("MmCreateMemoryArea failed with %lx for VACB %p\n", Status, Vacb);
+ return Status;
}
ASSERT(((ULONG_PTR)Vacb->BaseAddress % PAGE_SIZE) == 0);
#endif
Status = CcRosMapVacb(current);
+ if (!NT_SUCCESS(Status))
+ {
+ RemoveEntryList(¤t->CacheMapVacbListEntry);
+ RemoveEntryList(¤t->VacbLruListEntry);
+ CcRosReleaseVacbLock(current);
+ ExFreeToNPagedLookasideList(&VacbLookasideList, current);
+ }
return Status;
}