From: Jeffrey Altman Date: Tue, 26 Mar 2013 13:02:00 +0000 (-0400) Subject: Windows: AFSDeleteObjectInfo AFS_OBJECT_HELD_IN_SERVICE X-Git-Tag: upstream/1.8.0_pre1^2~1245 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=a8383140c9ca238657e8bf1ce63f8ef7d571cdac;p=packages%2Fo%2Fopenafs.git 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 --- 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);