Author: fireball
Date: Thu Aug 23 23:41:38 2007
New Revision: 28486
URL:
http://svn.reactos.org/svn/reactos?rev=28486&view=rev
Log:
- Set NULL Io cancel routine, fixes an assert when using usb storage driver.
Modified:
trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c
Modified: trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/usb/nt4compat/usbd…
==============================================================================
--- trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c (original)
+++ trunk/reactos/drivers/usb/nt4compat/usbdriver/umss.c Thu Aug 23 23:41:38 2007
@@ -1449,6 +1449,7 @@
//this device has its irp queued
if (status == STATUS_CANCELLED)
{
+ usb_dbg_print(DBGLVL_MAXIMUM, ("umss_complete_request(): status of irp is
cancelled\n"));
IoAcquireCancelSpinLock(&old_irql);
if (dev_obj->CurrentIrp == pirp)
{
@@ -1462,8 +1463,15 @@
}
}
else
+ {
// all requests come to this point from the irp queue
IoStartNextPacket(dev_obj, FALSE);
+
+ // we are going to complete the request, so set it's cancel routine to NULL
+ IoAcquireCancelSpinLock(&old_irql);
+ (void)IoSetCancelRoutine(pirp, NULL);
+ IoReleaseCancelSpinLock(old_irql);
+ }
pirp->IoStatus.Status = status;