From a7caca2e37467dce452d01eb5acd6a4b94fa93a0 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 8 Mar 2012 03:02:28 +0000 Subject: [PATCH] [NTOSKRNL] - Release the IO database lock before unloading the device (and driver too) to prevent deadlocks svn path=/trunk/; revision=56089 --- reactos/ntoskrnl/io/iomgr/volume.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/reactos/ntoskrnl/io/iomgr/volume.c b/reactos/ntoskrnl/io/iomgr/volume.c index 7fe6df8a168..12cc4a7ebb2 100644 --- a/reactos/ntoskrnl/io/iomgr/volume.c +++ b/reactos/ntoskrnl/io/iomgr/volume.c @@ -50,6 +50,9 @@ IopDecrementDeviceObjectRef(IN PDEVICE_OBJECT DeviceObject, return; } + /* Release lock */ + KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, OldIrql); + /* Here, DO is not referenced any longer, check if we have to unload it */ if (UnloadIfUnused || IoGetDevObjExtension(DeviceObject)->ExtensionFlags & (DOE_UNLOAD_PENDING | DOE_DELETE_PENDING | DOE_REMOVE_PENDING)) @@ -57,9 +60,6 @@ IopDecrementDeviceObjectRef(IN PDEVICE_OBJECT DeviceObject, /* Unload the driver */ IopUnloadDevice(DeviceObject); } - - /* Release lock */ - KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, OldIrql); } /*