- Do not complete IRP while likely holding a spinlock

svn path=/trunk/; revision=57519
This commit is contained in:
Thomas Faber 2012-10-08 10:11:42 +00:00
parent ce4ac4fb98
commit a6127a1deb

View file

@ -23,7 +23,6 @@
* all happen at DISPATCH_LEVEL all of the time, so thread switching on a single * all happen at DISPATCH_LEVEL all of the time, so thread switching on a single
* processor can create races too. * processor can create races too.
*/ */
/* $Id$ */
#include <ntdef.h> #include <ntdef.h>
#undef DECLSPEC_IMPORT #undef DECLSPEC_IMPORT
@ -68,11 +67,10 @@ static VOID NTAPI IopCsqCancelRoutine(PDEVICE_OBJECT DeviceObject,
/* Now that we have our CSQ, complete the IRP */ /* Now that we have our CSQ, complete the IRP */
Csq->CsqAcquireLock(Csq, &Irql); Csq->CsqAcquireLock(Csq, &Irql);
{
Csq->CsqRemoveIrp(Csq, Irp); Csq->CsqRemoveIrp(Csq, Irp);
Csq->CsqCompleteCanceledIrp(Csq, Irp);
}
Csq->CsqReleaseLock(Csq, Irql); Csq->CsqReleaseLock(Csq, Irql);
Csq->CsqCompleteCanceledIrp(Csq, Irp);
} }