From: Jeffrey Altman Date: Thu, 4 Apr 2013 03:37:53 +0000 (-0400) Subject: Windows: AFSInitPIOCtlDirectoryCB Vol ObjInfoTree X-Git-Tag: openafs-stable-1_8_0pre1~1239 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=e762eec9ac9b648e9878e03e4b3bf185d2e2a1c3 Windows: AFSInitPIOCtlDirectoryCB Vol ObjInfoTree Hold the VolumeCB->ObjectInfoTree.TreeLock exclusively when calling AFSAllocateObjectInfo() in order to protect the lists of child objects. Change-Id: I16f104b8112e972fa8c60da2b0dbcb07ad42456c Reviewed-on: http://gerrit.openafs.org/9723 Reviewed-by: Peter Scott 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 2a86401..42ac41b 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp @@ -5338,12 +5338,17 @@ AFSInitPIOCtlDirectoryCB( IN AFSObjectInfoCB *ParentObjectInfo) __Enter { + AFSAcquireExcl( ParentObjectInfo->VolumeCB->ObjectInfoTree.TreeLock, + TRUE); + pObjectInfoCB = AFSAllocateObjectInfo( ParentObjectInfo, 0); if( pObjectInfoCB == NULL) { + AFSReleaseResource( ParentObjectInfo->VolumeCB->ObjectInfoTree.TreeLock); + try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES); } @@ -5356,6 +5361,8 @@ AFSInitPIOCtlDirectoryCB( IN AFSObjectInfoCB *ParentObjectInfo) pObjectInfoCB, lCount)); + AFSReleaseResource( ParentObjectInfo->VolumeCB->ObjectInfoTree.TreeLock); + pObjectInfoCB->FileType = (ULONG) AFS_FILE_TYPE_PIOCTL; pObjectInfoCB->FileAttributes = FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM;