From: Jeffrey Altman Date: Mon, 10 Feb 2014 10:13:37 +0000 (-0500) Subject: Windows: AFSShareWrite do not assign pFcb too soon X-Git-Tag: openafs-stable-1_8_0pre1~775 X-Git-Url: http://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=939784c017f065a2f4fce19b48cdde56ac4be83c;hp=01a7c64e472c241798306e7f8137de28efdef37e Windows: AFSShareWrite do not assign pFcb too soon In AFSShareWrite the value of pFcb is used to determine whether or not the pfcb->NPFcb->Resource must be released upon exit. Therefore, it must not be assigned a value until just before the resource is acquired. Change-Id: I6951d91fcf672c8d236d19e075fff0be3552c9b8 Reviewed-on: http://gerrit.openafs.org/10828 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp b/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp index 375b101..d9809e0 100644 --- a/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp +++ b/src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp @@ -2145,8 +2145,6 @@ AFSShareWrite( IN PDEVICE_OBJECT DeviceObject, __Enter { - pFcb = (AFSFcb *)pIrpSp->FileObject->FsContext; - pCcb = (AFSCcb *)pIrpSp->FileObject->FsContext2; AFSDbgTrace(( AFS_SUBSYSTEM_PIPE_PROCESSING, @@ -2183,6 +2181,8 @@ AFSShareWrite( IN PDEVICE_OBJECT DeviceObject, try_return( ntStatus = STATUS_INSUFFICIENT_RESOURCES); } + pFcb = (AFSFcb *)pIrpSp->FileObject->FsContext; + AFSAcquireShared( &pFcb->NPFcb->Resource, TRUE);