From ed76e573ae5db4fb83d57217562c4998ffa845cb Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 12 Apr 2013 11:12:13 -0400 Subject: [PATCH] Windows: AFSInvalidateVolume ObjectInfo refcnt decrement In AFSInvalidateVolume a reference count is obtained in order to ensure that the object is valid throughout the invalidation request. Although the refcnt is obtained while holding the TreeLock the refcnt was not released while holding the TreeLock which could open the door for another thread to race. Change-Id: I5c7ee91b78a2ce5f03cdc5f835b15357ecbec443 Reviewed-on: http://gerrit.openafs.org/9782 Reviewed-by: Rod Widdowson Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp index 3acfa8e..2c4dc07 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -2759,6 +2759,9 @@ AFSInvalidateVolume( IN AFSVolumeCB *VolumeCB, AFSInvalidateObject( &pCurrentObject, Reason); + AFSAcquireShared( VolumeCB->ObjectInfoTree.TreeLock, + TRUE); + if ( pCurrentObject ) { @@ -2772,9 +2775,6 @@ AFSInvalidateVolume( IN AFSVolumeCB *VolumeCB, lCount)); } - AFSAcquireShared( VolumeCB->ObjectInfoTree.TreeLock, - TRUE); - pCurrentObject = pNextObject; } -- 1.9.4