From a8383140c9ca238657e8bf1ce63f8ef7d571cdac Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 26 Mar 2013 09:02:00 -0400 Subject: [PATCH] Windows: AFSDeleteObjectInfo AFS_OBJECT_HELD_IN_SERVICE Move the check for AFS_OBJECT_HELD_IN_SERVICE until after the TreeLock is held. Change-Id: I38d095c83dc5878770a7a31bee08048a777cb3cb Reviewed-on: http://gerrit.openafs.org/9674 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index 7d3e1024c..3e85ec239 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -6267,10 +6267,6 @@ AFSDeleteObjectInfo( IN AFSObjectInfoCB **ppObjectInfo) ASSERT( *ppObjectInfo == NULL); - ASSERT( pObjectInfo->ObjectReferenceCount == 0); - - bHeldInService = BooleanFlagOn( pObjectInfo->Flags, AFS_OBJECT_HELD_IN_SERVICE); - if( !ExIsResourceAcquiredExclusiveLite( pObjectInfo->VolumeCB->ObjectInfoTree.TreeLock)) { @@ -6282,6 +6278,10 @@ AFSDeleteObjectInfo( IN AFSObjectInfoCB **ppObjectInfo) bAcquiredTreeLock = TRUE; } + ASSERT( pObjectInfo->ObjectReferenceCount == 0); + + bHeldInService = BooleanFlagOn( pObjectInfo->Flags, AFS_OBJECT_HELD_IN_SERVICE); + if ( BooleanFlagOn( pObjectInfo->Flags, AFS_OBJECT_FLAGS_PARENT_FID)) { @@ -6367,6 +6367,8 @@ AFSDeleteObjectInfo( IN AFSObjectInfoCB **ppObjectInfo) FileId = pObjectInfo->FileId; } + ASSERT( pObjectInfo->ObjectReferenceCount == 0); + ExDeleteResourceLite( &pObjectInfo->NonPagedInfo->ObjectInfoLock); ExDeleteResourceLite( &pObjectInfo->NonPagedInfo->DirectoryNodeHdrLock); -- 2.39.5