diff --git a/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp b/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp index b4adbeca46..6ad10312dd 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSWorker.cpp @@ -1534,9 +1534,14 @@ AFSPrimaryVolumeWorkerThread( IN PVOID Context) if( pFcb != NULL) { + AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock); + AFSCleanupFcb( pFcb, TRUE); + AFSAcquireExcl( pVolumeCB->ObjectInfoTree.TreeLock, + TRUE); + AFSRemoveFcb( &pFcb); } @@ -1565,8 +1570,13 @@ AFSPrimaryVolumeWorkerThread( IN PVOID Context) else if( pCurrentObject->Fcb != NULL) { + AFSReleaseResource( pVolumeCB->ObjectInfoTree.TreeLock); + AFSCleanupFcb( pCurrentObject->Fcb, FALSE); + + AFSAcquireShared( pVolumeCB->ObjectInfoTree.TreeLock, + TRUE); } }