From f7adbd3d3977a328612c0f527d764566846593da Mon Sep 17 00:00:00 2001 From: Peter Scott Date: Fri, 4 Nov 2011 07:31:57 -0600 Subject: [PATCH] Windows: Failed to release correct lock For cross-directory renames, the correct parent lock was not being tracked Change-Id: Ib50aad63f56cde638ff3bf1595d4495338c15f91 Reviewed-on: http://gerrit.openafs.org/5805 Tested-by: BuildBot Tested-by: Jeffrey Altman Reviewed-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp index 390ad80c0..cdd850f59 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp @@ -1917,6 +1917,7 @@ AFSSetRenameInfo( IN PIRP Irp) BOOLEAN bReleaseVolumeLock = FALSE; BOOLEAN bReleaseTargetDirLock = FALSE; BOOLEAN bReleaseSourceDirLock = FALSE; + PERESOURCE pSourceDirLock = NULL; __Enter { @@ -2036,10 +2037,6 @@ AFSSetRenameInfo( IN PIRP Irp) try_return( ntStatus = STATUS_NOT_SAME_DEVICE); } - // - // If the target exists be sure the ReplaceIfExists flag is set - // - AFSAcquireExcl( pTargetParentObject->VolumeCB->VolumeLock, TRUE); @@ -2059,6 +2056,8 @@ AFSSetRenameInfo( IN PIRP Irp) TRUE); bReleaseSourceDirLock = TRUE; + + pSourceDirLock = pSrcFcb->ObjectInformation->ParentObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock; } AFSLocateCaseSensitiveDirEntry( pTargetParentObject->Specific.Directory.DirectoryNodeHdr.CaseSensitiveTreeHead, @@ -2517,7 +2516,7 @@ try_exit: if( bReleaseSourceDirLock) { - AFSReleaseResource( pSrcFcb->ObjectInformation->ParentObjectInformation->Specific.Directory.DirectoryNodeHdr.TreeLock); + AFSReleaseResource( pSourceDirLock); } } -- 2.39.5