Author: cgutman Date: Sat Jun 27 07:14:06 2009 New Revision: 41629
URL: http://svn.reactos.org/svn/reactos?rev=41629&view=rev Log: - Acquire the cancel spin lock before calling IoSetCancelRoutine - Remove some extra junk
Modified: trunk/reactos/drivers/network/tcpip/tcpip/irp.c
Modified: trunk/reactos/drivers/network/tcpip/tcpip/irp.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/tcpip/tcpip... ============================================================================== --- trunk/reactos/drivers/network/tcpip/tcpip/irp.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/tcpip/tcpip/irp.c [iso-8859-1] Sat Jun 27 07:14:06 2009 @@ -16,10 +16,7 @@ }
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 @@ if( Status == STATUS_PENDING ) IoMarkIrpPending( Irp ); else { - Irql = KeGetCurrentIrql(); + IoAcquireCancelSpinLock(&OldIrql); + (void)IoSetCancelRoutine( Irp, NULL ); + IoReleaseCancelSpinLock(OldIrql);
- (void)IoSetCancelRoutine( Irp, NULL ); 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;