[ros-diffs] [fireball] 28486: - Set NULL Io cancel routine, fixes an assert when using usb storage driver.

fireball at svn.reactos.org fireball at svn.reactos.org
Thu Aug 23 21:41:38 CEST 2007


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/usbdriver/umss.c?rev=28486&r1=28485&r2=28486&view=diff
==============================================================================
--- 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;
 




More information about the Ros-diffs mailing list