mirror of
https://github.com/reactos/reactos.git
synced 2025-05-20 17:45:06 +00:00
[NTOS:CC] Perform sanity checks before doing anything else
This commit is contained in:
parent
cff3c399c6
commit
57ee31ee33
2 changed files with 13 additions and 12 deletions
|
@ -581,7 +581,6 @@ CcUnpinDataForThread (
|
|||
IN ERESOURCE_THREAD ResourceThreadId)
|
||||
{
|
||||
PINTERNAL_BCB iBcb = Bcb;
|
||||
PROS_SHARED_CACHE_MAP SharedCacheMap;
|
||||
|
||||
CCTRACE(CC_API_DEBUG, "Bcb=%p ResourceThreadId=%lu\n", Bcb, ResourceThreadId);
|
||||
|
||||
|
@ -591,8 +590,7 @@ CcUnpinDataForThread (
|
|||
iBcb->PinCount--;
|
||||
}
|
||||
|
||||
SharedCacheMap = iBcb->Vacb->SharedCacheMap;
|
||||
CcpDereferenceBcb(SharedCacheMap, iBcb);
|
||||
CcpDereferenceBcb(iBcb->Vacb->SharedCacheMap, iBcb);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -740,11 +740,13 @@ CcRosEnsureVacbResident(
|
|||
|
||||
ASSERT((Offset + Length) <= VACB_MAPPING_GRANULARITY);
|
||||
|
||||
#if 0
|
||||
if ((Vacb->FileOffset.QuadPart + Offset) > Vacb->SharedCacheMap->SectionSize.QuadPart)
|
||||
{
|
||||
DPRINT1("Vacb read beyond the file size!\n");
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
|
||||
BaseAddress = (PVOID)((ULONG_PTR)Vacb->BaseAddress + Offset);
|
||||
|
||||
|
@ -862,15 +864,6 @@ CcRosInternalFreeVacb (
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Delete the mapping */
|
||||
Status = MmUnmapViewInSystemSpace(Vacb->BaseAddress);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to unmap VACB from System address space! Status 0x%08X\n", Status);
|
||||
ASSERT(FALSE);
|
||||
/* Proceed with the deĺetion anyway */
|
||||
}
|
||||
|
||||
if (Vacb->ReferenceCount != 0)
|
||||
{
|
||||
DPRINT1("Invalid free: %ld\n", Vacb->ReferenceCount);
|
||||
|
@ -884,6 +877,16 @@ CcRosInternalFreeVacb (
|
|||
ASSERT(IsListEmpty(&Vacb->CacheMapVacbListEntry));
|
||||
ASSERT(IsListEmpty(&Vacb->DirtyVacbListEntry));
|
||||
ASSERT(IsListEmpty(&Vacb->VacbLruListEntry));
|
||||
|
||||
/* Delete the mapping */
|
||||
Status = MmUnmapViewInSystemSpace(Vacb->BaseAddress);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DPRINT1("Failed to unmap VACB from System address space! Status 0x%08X\n", Status);
|
||||
ASSERT(FALSE);
|
||||
/* Proceed with the deĺetion anyway */
|
||||
}
|
||||
|
||||
RtlFillMemory(Vacb, sizeof(*Vacb), 0xfd);
|
||||
ExFreeToNPagedLookasideList(&VacbLookasideList, Vacb);
|
||||
return STATUS_SUCCESS;
|
||||
|
|
Loading…
Reference in a new issue