- Acquire the cancel spin lock before calling IoSetCancelRoutine

- Remove some extra junk

svn path=/trunk/; revision=41629
This commit is contained in:
Cameron Gutman 2009-06-27 03:14:06 +00:00
parent 128aefcd63
commit 97d8658da9

View file

@ -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;