From: Jeffrey Altman Date: Mon, 26 Nov 2012 12:10:05 +0000 (-0500) Subject: Windows: Missing DirEntry Ref incr AFSLocateName X-Git-Tag: upstream/1.8.0_pre1^2~1770 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=282e2bdd7f34f26073e003a84a85cb4f8b59f0cd;p=packages%2Fo%2Fopenafs.git Windows: Missing DirEntry Ref incr AFSLocateName In the STATUS_NAME_COLLISION error path the DirEntry refcnt must be incremented because it will be decremented before exit from AFSLocateName(). Change-Id: I7cf976afa8e62d0d9803549b64a5d0dae27cd9b1 Reviewed-on: http://gerrit.openafs.org/8518 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp index c4405a2c5..0f22bba82 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSNameSupport.cpp @@ -1518,6 +1518,20 @@ AFSLocateNameEntry( IN GUID *AuthGroup, pDirEntry->CaseInsensitiveList.fLink != NULL) { + // + // Increment our dir entry ref count since we will decrement it on exit + // + + lCount = InterlockedIncrement( &pDirEntry->OpenReferenceCount); + + AFSDbgLogMsg( AFS_SUBSYSTEM_DIRENTRY_REF_COUNTING, + AFS_TRACE_LEVEL_VERBOSE, + "AFSLocateNameEntry Increment5 count on %wZ DE %p Ccb %p Cnt %d\n", + &pDirEntry->NameInformation.FileName, + pDirEntry, + NULL, + lCount); + AFSReleaseResource( pParentDirEntry->ObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock); try_return(ntStatus = STATUS_OBJECT_NAME_COLLISION);