Author: cgutman
Date: Sat Aug 2 20:38:05 2008
New Revision: 35053
URL:
http://svn.reactos.org/svn/reactos?rev=35053&view=rev
Log:
- We must assign values to Irp->IoStatus.Status and Irp->IoStatus.Information
because the function that called us might not call UnlockAndMaybeComplete to assign those
values
Modified:
branches/aicom-network-fixes/drivers/network/afd/afd/read.c
Modified: branches/aicom-network-fixes/drivers/network/afd/afd/read.c
URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
==============================================================================
--- branches/aicom-network-fixes/drivers/network/afd/afd/read.c [iso-8859-1] (original)
+++ branches/aicom-network-fixes/drivers/network/afd/afd/read.c [iso-8859-1] Sat Aug 2
20:38:05 2008
@@ -129,7 +129,7 @@
PIRP NextIrp;
PIO_STACK_LOCATION NextIrpSp;
PAFD_RECV_INFO RecvReq;
- UINT TotalBytesCopied = 0;
+ UINT TotalBytesCopied = 0, RetBytesCopied = 0;
NTSTATUS Status = STATUS_SUCCESS, RetStatus = STATUS_PENDING;
AFD_DbgPrint(MID_TRACE,("%x %x\n", FCB, Irp));
@@ -197,7 +197,10 @@
RecvReq->BufferCount, FALSE );
NextIrp->IoStatus.Status = Status;
NextIrp->IoStatus.Information = TotalBytesCopied;
- if( NextIrp == Irp ) RetStatus = Status;
+ if( NextIrp == Irp ) {
+ RetStatus = Status;
+ RetBytesCopied = TotalBytesCopied;
+ }
if( NextIrp->MdlAddress ) UnlockRequest( NextIrp, IoGetCurrentIrpStackLocation(
NextIrp ) );
IoCompleteRequest( NextIrp, IO_NETWORK_INCREMENT );
}
@@ -212,6 +215,12 @@
PollReeval( FCB->DeviceExt, FCB->FileObject );
AFD_DbgPrint(MID_TRACE,("RetStatus for irp %x is %x\n", Irp, RetStatus));
+
+ /* Sometimes we're called with a NULL Irp */
+ if( Irp ) {
+ Irp->IoStatus.Status = RetStatus;
+ Irp->IoStatus.Information = RetBytesCopied;
+ }
return RetStatus;
}