Index: pin.c =================================================================== --- ntoskrnl/cc/pin.c (revision 71991) +++ ntoskrnl/cc/pin.c (working copy) @@ -185,10 +185,8 @@ ASSERT(iBcb->Pinned == FALSE); iBcb->Pinned = TRUE; - if (InterlockedIncrement(&iBcb->Vacb->PinCount) == 1) - { - CcRosReleaseVacbLock(iBcb->Vacb); - } + InterlockedIncrement(&iBcb->Vacb->PinCount); + CcRosReleaseVacbLock(iBcb->Vacb); if (Flags & PIN_EXCLUSIVE) { @@ -281,10 +279,8 @@ { ExReleaseResourceForThreadLite(&iBcb->Lock, ResourceThreadId); iBcb->Pinned = FALSE; - if (InterlockedDecrement(&iBcb->Vacb->PinCount) == 0) - { - CcRosAcquireVacbLock(iBcb->Vacb, NULL); - } + InterlockedDecrement(&iBcb->Vacb->PinCount); + CcRosAcquireVacbLock(iBcb->Vacb, NULL); } CcRosReleaseVacb(iBcb->Vacb->SharedCacheMap, @@ -355,10 +351,8 @@ { ExReleaseResourceLite(&iBcb->Lock); iBcb->Pinned = FALSE; - if (InterlockedDecrement(&iBcb->Vacb->PinCount) == 0) - { - CcRosAcquireVacbLock(iBcb->Vacb, NULL); - } + InterlockedDecrement(&iBcb->Vacb->PinCount); + CcRosAcquireVacbLock(iBcb->Vacb, NULL); } ExDeleteResourceLite(&iBcb->Lock); ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb); Index: view.c =================================================================== --- ntoskrnl/cc/view.c (revision 71991) +++ ntoskrnl/cc/view.c (working copy) @@ -422,10 +422,7 @@ KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, oldIrql); KeReleaseGuardedMutex(&ViewLock); - if (InterlockedCompareExchange(&Vacb->PinCount, 0, 0) == 0) - { - CcRosReleaseVacbLock(Vacb); - } + CcRosReleaseVacbLock(Vacb); return STATUS_SUCCESS; } @@ -462,10 +459,7 @@ CcRosVacbIncRefCount(current); KeReleaseSpinLock(&SharedCacheMap->CacheMapLock, oldIrql); KeReleaseGuardedMutex(&ViewLock); - if (InterlockedCompareExchange(¤t->PinCount, 0, 0) == 0) - { - CcRosAcquireVacbLock(current, NULL); - } + CcRosAcquireVacbLock(current, NULL); return current; } if (current->FileOffset.QuadPart > FileOffset) @@ -712,10 +706,7 @@ KeReleaseGuardedMutex(&ViewLock); ExFreeToNPagedLookasideList(&VacbLookasideList, *Vacb); *Vacb = current; - if (InterlockedCompareExchange(¤t->PinCount, 0, 0) == 0) - { - CcRosAcquireVacbLock(current, NULL); - } + CcRosAcquireVacbLock(current, NULL); return STATUS_SUCCESS; } if (current->FileOffset.QuadPart < FileOffset) @@ -945,10 +936,7 @@ } } - if (InterlockedCompareExchange(¤t->PinCount, 0, 0) == 0) - { - CcRosReleaseVacbLock(current); - } + CcRosReleaseVacbLock(current); KeAcquireGuardedMutex(&ViewLock); KeAcquireSpinLock(&SharedCacheMap->CacheMapLock, &oldIrql);