mirror of
https://github.com/reactos/reactos.git
synced 2025-05-21 18:16:07 +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)
|
IN ERESOURCE_THREAD ResourceThreadId)
|
||||||
{
|
{
|
||||||
PINTERNAL_BCB iBcb = Bcb;
|
PINTERNAL_BCB iBcb = Bcb;
|
||||||
PROS_SHARED_CACHE_MAP SharedCacheMap;
|
|
||||||
|
|
||||||
CCTRACE(CC_API_DEBUG, "Bcb=%p ResourceThreadId=%lu\n", Bcb, ResourceThreadId);
|
CCTRACE(CC_API_DEBUG, "Bcb=%p ResourceThreadId=%lu\n", Bcb, ResourceThreadId);
|
||||||
|
|
||||||
|
@ -591,8 +590,7 @@ CcUnpinDataForThread (
|
||||||
iBcb->PinCount--;
|
iBcb->PinCount--;
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedCacheMap = iBcb->Vacb->SharedCacheMap;
|
CcpDereferenceBcb(iBcb->Vacb->SharedCacheMap, iBcb);
|
||||||
CcpDereferenceBcb(SharedCacheMap, iBcb);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -740,11 +740,13 @@ CcRosEnsureVacbResident(
|
||||||
|
|
||||||
ASSERT((Offset + Length) <= VACB_MAPPING_GRANULARITY);
|
ASSERT((Offset + Length) <= VACB_MAPPING_GRANULARITY);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if ((Vacb->FileOffset.QuadPart + Offset) > Vacb->SharedCacheMap->SectionSize.QuadPart)
|
if ((Vacb->FileOffset.QuadPart + Offset) > Vacb->SharedCacheMap->SectionSize.QuadPart)
|
||||||
{
|
{
|
||||||
DPRINT1("Vacb read beyond the file size!\n");
|
DPRINT1("Vacb read beyond the file size!\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
BaseAddress = (PVOID)((ULONG_PTR)Vacb->BaseAddress + Offset);
|
BaseAddress = (PVOID)((ULONG_PTR)Vacb->BaseAddress + Offset);
|
||||||
|
|
||||||
|
@ -862,15 +864,6 @@ CcRosInternalFreeVacb (
|
||||||
}
|
}
|
||||||
#endif
|
#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)
|
if (Vacb->ReferenceCount != 0)
|
||||||
{
|
{
|
||||||
DPRINT1("Invalid free: %ld\n", Vacb->ReferenceCount);
|
DPRINT1("Invalid free: %ld\n", Vacb->ReferenceCount);
|
||||||
|
@ -884,6 +877,16 @@ CcRosInternalFreeVacb (
|
||||||
ASSERT(IsListEmpty(&Vacb->CacheMapVacbListEntry));
|
ASSERT(IsListEmpty(&Vacb->CacheMapVacbListEntry));
|
||||||
ASSERT(IsListEmpty(&Vacb->DirtyVacbListEntry));
|
ASSERT(IsListEmpty(&Vacb->DirtyVacbListEntry));
|
||||||
ASSERT(IsListEmpty(&Vacb->VacbLruListEntry));
|
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);
|
RtlFillMemory(Vacb, sizeof(*Vacb), 0xfd);
|
||||||
ExFreeToNPagedLookasideList(&VacbLookasideList, Vacb);
|
ExFreeToNPagedLookasideList(&VacbLookasideList, Vacb);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
|
|
Loading…
Reference in a new issue