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/tcpi…
==============================================================================
--- 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;