From 05fa1202fb63e32aff3c60d47286c8af232322fe Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sun, 7 Oct 2012 10:23:19 -0400 Subject: [PATCH] Windows: AFSInitFcb Check ObjectInfo->Fcb for NULL Now that AFSInitFcb is called under the ObjectInfoLock, it is once again safe to perform a test for ObjectInfo->Fcb != NULL and return immediately if an Fcb is already assigned. Change-Id: Id926b9ccf24c7761dbeacf42c53d7cc7d1375482 Reviewed-on: http://gerrit.openafs.org/8226 Tested-by: BuildBot Reviewed-by: Rod Widdowson Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsrdr/kernel/lib/AFSFcbSupport.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/WINNT/afsrdr/kernel/lib/AFSFcbSupport.cpp b/src/WINNT/afsrdr/kernel/lib/AFSFcbSupport.cpp index 83faba82e8..b3dee29dd6 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSFcbSupport.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSFcbSupport.cpp @@ -47,7 +47,7 @@ // // Return: // -// A status is returned for the function +// Return Fcb->NPFcb->Resource held exclusive // NTSTATUS @@ -74,6 +74,15 @@ AFSInitFcb( IN AFSDirectoryCB *DirEntry) pVolumeCB = pObjectInfo->VolumeCB; + if ( pObjectInfo->Fcb != NULL) + { + + AFSAcquireExcl( &pObjectInfo->Fcb->NPFcb->Resource, + TRUE); + + try_return( ntStatus = STATUS_SUCCESS); + } + // // Allocate the Fcb and the nonpaged portion of the Fcb. //