mirror of
https://github.com/reactos/reactos.git
synced 2024-09-28 05:26:58 +00:00
[NTOSKRNL] Add a few asserts when mapping a VACB in kernel space
Also, reset VACB content when returning it to the lookaside list CORE-14478
This commit is contained in:
parent
8aff426af0
commit
dea9c291ab
|
@ -624,17 +624,20 @@ CcRosMapVacbInKernelSpace(
|
|||
ULONG i;
|
||||
NTSTATUS Status;
|
||||
ULONG_PTR NumberOfPages;
|
||||
PVOID BaseAddress = NULL;
|
||||
|
||||
/* Create a memory area. */
|
||||
MmLockAddressSpace(MmGetKernelAddressSpace());
|
||||
Status = MmCreateMemoryArea(MmGetKernelAddressSpace(),
|
||||
0, // nothing checks for VACB mareas, so set to 0
|
||||
&Vacb->BaseAddress,
|
||||
&BaseAddress,
|
||||
VACB_MAPPING_GRANULARITY,
|
||||
PAGE_READWRITE,
|
||||
(PMEMORY_AREA*)&Vacb->MemoryArea,
|
||||
0,
|
||||
PAGE_SIZE);
|
||||
ASSERT(Vacb->BaseAddress == NULL);
|
||||
Vacb->BaseAddress = BaseAddress;
|
||||
MmUnlockAddressSpace(MmGetKernelAddressSpace());
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
|
@ -644,6 +647,7 @@ CcRosMapVacbInKernelSpace(
|
|||
|
||||
ASSERT(((ULONG_PTR)Vacb->BaseAddress % PAGE_SIZE) == 0);
|
||||
ASSERT((ULONG_PTR)Vacb->BaseAddress > (ULONG_PTR)MmSystemRangeStart);
|
||||
ASSERT((ULONG_PTR)Vacb->BaseAddress + VACB_MAPPING_GRANULARITY - 1 > (ULONG_PTR)MmSystemRangeStart);
|
||||
|
||||
/* Create a virtual mapping for this memory area */
|
||||
NumberOfPages = BYTES_TO_PAGES(VACB_MAPPING_GRANULARITY);
|
||||
|
@ -659,6 +663,11 @@ CcRosMapVacbInKernelSpace(
|
|||
KeBugCheck(MEMORY_MANAGEMENT);
|
||||
}
|
||||
|
||||
ASSERT(BaseAddress == Vacb->BaseAddress);
|
||||
ASSERT(i * PAGE_SIZE < VACB_MAPPING_GRANULARITY);
|
||||
ASSERT((ULONG_PTR)Vacb->BaseAddress + (i * PAGE_SIZE) >= (ULONG_PTR)BaseAddress);
|
||||
ASSERT((ULONG_PTR)Vacb->BaseAddress + (i * PAGE_SIZE) > (ULONG_PTR)MmSystemRangeStart);
|
||||
|
||||
Status = MmCreateVirtualMapping(NULL,
|
||||
(PVOID)((ULONG_PTR)Vacb->BaseAddress + (i * PAGE_SIZE)),
|
||||
PAGE_READWRITE,
|
||||
|
@ -951,6 +960,7 @@ CcRosInternalFreeVacb (
|
|||
|
||||
ASSERT(Vacb->PinCount == 0);
|
||||
ASSERT(Vacb->ReferenceCount == 0);
|
||||
RtlFillMemory(Vacb, sizeof(Vacb), 0xfd);
|
||||
ExFreeToNPagedLookasideList(&VacbLookasideList, Vacb);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue