diff --git a/drivers/network/afd/afd/read.c b/drivers/network/afd/afd/read.c index e9efcb8708a..7e5d5eeb28b 100644 --- a/drivers/network/afd/afd/read.c +++ b/drivers/network/afd/afd/read.c @@ -573,18 +573,18 @@ AfdPacketSocketReadData(PDEVICE_OBJECT DeviceObject, PIRP Irp, AFD_DbgPrint(MID_TRACE,("Recv flags %x\n", RecvReq->AfdFlags)); - RecvReq->BufferArray = LockBuffers( RecvReq->BufferArray, - RecvReq->BufferCount, - RecvReq->Address, - RecvReq->AddressLength, - TRUE, TRUE ); - - if( !RecvReq->BufferArray ) { /* access violation in userspace */ - return UnlockAndMaybeComplete - ( FCB, STATUS_ACCESS_VIOLATION, Irp, 0, NULL ); - } - if( !IsListEmpty( &FCB->DatagramList ) ) { + RecvReq->BufferArray = LockBuffers( RecvReq->BufferArray, + RecvReq->BufferCount, + RecvReq->Address, + RecvReq->AddressLength, + TRUE, TRUE ); + + if( !RecvReq->BufferArray ) { /* access violation in userspace */ + return UnlockAndMaybeComplete + ( FCB, STATUS_ACCESS_VIOLATION, Irp, 0, NULL ); + } + ListEntry = RemoveHeadList( &FCB->DatagramList ); DatagramRecv = CONTAINING_RECORD ( ListEntry, AFD_STORED_DATAGRAM, ListEntry ); diff --git a/drivers/network/afd/afd/write.c b/drivers/network/afd/afd/write.c index ac3dffde831..08cd1459aad 100644 --- a/drivers/network/afd/afd/write.c +++ b/drivers/network/afd/afd/write.c @@ -273,11 +273,6 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp, AFD_DbgPrint(MID_TRACE,("We already have %d bytes waiting.\n", FCB->Send.BytesUsed)); - SendReq->BufferArray = LockBuffers( SendReq->BufferArray, - SendReq->BufferCount, - NULL, NULL, - FALSE, FALSE ); - AFD_DbgPrint(MID_TRACE,("FCB->Send.BytesUsed = %d\n", FCB->Send.BytesUsed)); @@ -287,6 +282,11 @@ AfdConnectedSocketWriteData(PDEVICE_OBJECT DeviceObject, PIRP Irp, AFD_DbgPrint(MID_TRACE,("We can accept %d bytes\n", SpaceAvail)); + SendReq->BufferArray = LockBuffers( SendReq->BufferArray, + SendReq->BufferCount, + NULL, NULL, + FALSE, FALSE ); + for( i = 0; FCB->Send.BytesUsed < FCB->Send.Size && i < SendReq->BufferCount; i++ ) { CopySize = MIN( SpaceAvail,