Windows: AFSShareWrite do not assign pFcb too soon
authorJeffrey Altman <jaltman@your-file-system.com>
Mon, 10 Feb 2014 10:13:37 +0000 (05:13 -0500)
committerJeffrey Altman <jaltman@your-file-system.com>
Mon, 17 Mar 2014 21:10:07 +0000 (14:10 -0700)
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 <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsrdr/kernel/lib/AFSWrite.cpp

index 375b101..d9809e0 100644 (file)
@@ -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);