diff --git a/reactos/drivers/network/tcpip/tcpip/irp.c b/reactos/drivers/network/tcpip/tcpip/irp.c index 104818f6aec..f2fc589d19b 100644 --- a/reactos/drivers/network/tcpip/tcpip/irp.c +++ b/reactos/drivers/network/tcpip/tcpip/irp.c @@ -16,10 +16,7 @@ VOID IRPRemember( PIRP Irp, PCHAR File, UINT Line ) { } NTSTATUS IRPFinish( PIRP Irp, NTSTATUS Status ) { - KIRQL Irql; - PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); - - //DbgPrint("Called: Irp %x, Status %x Event %x\n", Irp, Status, Irp->UserEvent); + KIRQL OldIrql; UntrackFL( __FILE__, __LINE__, Irp, IRP_TAG ); @@ -28,15 +25,11 @@ NTSTATUS IRPFinish( PIRP Irp, NTSTATUS Status ) { if( Status == STATUS_PENDING ) IoMarkIrpPending( Irp ); else { - Irql = KeGetCurrentIrql(); - + IoAcquireCancelSpinLock(&OldIrql); (void)IoSetCancelRoutine( Irp, NULL ); + IoReleaseCancelSpinLock(OldIrql); + IoCompleteRequest( Irp, IO_NETWORK_INCREMENT ); - if (KeGetCurrentIrql() != Irql) { - DbgPrint("WARNING: IO COMPLETION RETURNED AT WRONG IRQL:\n"); - DbgPrint("WARNING: IRP TYPE WAS %d\n", IrpSp->MajorFunction); - } - ASSERT(KeGetCurrentIrql() == Irql); } return Status;