[ros-diffs] [cgutman] 55086: [USB-BRINGUP-TRUNK] - Fix a broken check that resulted in freeing the same device object twice - Enable the IoDetachDevice call in usbstor now that the kernel bug is fixed

cgutman at svn.reactos.org cgutman at svn.reactos.org
Mon Jan 23 00:39:29 UTC 2012


Author: cgutman
Date: Mon Jan 23 00:39:28 2012
New Revision: 55086

URL: http://svn.reactos.org/svn/reactos?rev=55086&view=rev
Log:
[USB-BRINGUP-TRUNK]
- Fix a broken check that resulted in freeing the same device object twice
- Enable the IoDetachDevice call in usbstor now that the kernel bug is fixed

Modified:
    branches/usb-bringup-trunk/drivers/usb/usbstor/fdo.c
    branches/usb-bringup-trunk/ntoskrnl/io/iomgr/device.c

Modified: branches/usb-bringup-trunk/drivers/usb/usbstor/fdo.c
URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbstor/fdo.c?rev=55086&r1=55085&r2=55086&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbstor/fdo.c [iso-8859-1] (original)
+++ branches/usb-bringup-trunk/drivers/usb/usbstor/fdo.c [iso-8859-1] Mon Jan 23 00:39:28 2012
@@ -135,7 +135,7 @@
     Status = IoCallDriver(DeviceExtension->LowerDeviceObject, Irp);
 
     /* Detach from the device stack */
-    /* IoDetachDevice(DeviceExtension->LowerDeviceObject); */ //This crashes for some reason during unload
+    IoDetachDevice(DeviceExtension->LowerDeviceObject);
 
     /* Delete the device object */
     IoDeleteDevice(DeviceObject);

Modified: branches/usb-bringup-trunk/ntoskrnl/io/iomgr/device.c
URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/ntoskrnl/io/iomgr/device.c?rev=55086&r1=55085&r2=55086&view=diff
==============================================================================
--- branches/usb-bringup-trunk/ntoskrnl/io/iomgr/device.c [iso-8859-1] (original)
+++ branches/usb-bringup-trunk/ntoskrnl/io/iomgr/device.c [iso-8859-1] Mon Jan 23 00:39:28 2012
@@ -420,10 +420,10 @@
 
         /*
          * Check if we have an attached device and fail if we're attached
-         * and still have a reference count.
+         * or still have a reference count.
          */
         AttachedDeviceObject = DeviceObject->AttachedDevice;
-        if ((AttachedDeviceObject) && (DeviceObject->ReferenceCount)) return;
+        if ((AttachedDeviceObject) || (DeviceObject->ReferenceCount)) return;
 
         /* Check if we have a Security Descriptor */
         if (DeviceObject->SecurityDescriptor)




More information about the Ros-diffs mailing list