[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[win-pv-devel] [PATCH] Don't drop FDO mutex between PDO enumeration and Relations Count check



A PDO can disappear between these two, leading to an assertion failure so
keep the lock held to stop the list from being changed.

Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx>
---
 src/xendisk/fdo.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/src/xendisk/fdo.c b/src/xendisk/fdo.c
index cfa1ad3..779b7ad 100644
--- a/src/xendisk/fdo.c
+++ b/src/xendisk/fdo.c
@@ -265,8 +265,6 @@ __FdoEnumerate(
                   Relations->Objects,
                   sizeof (PDEVICE_OBJECT) * Count);
 
-    __FdoAcquireMutex(Fdo);
-
     // Remove any PDOs that do not appear in the device list
     ListEntry = Fdo->Dx->ListEntry.Flink;
     while (ListEntry != &Fdo->Dx->ListEntry) {
@@ -294,8 +292,6 @@ __FdoEnumerate(
         }
     }
 
-    __FdoReleaseMutex(Fdo);
-
     __FdoFree(PhysicalDeviceObject);
     return;
 
@@ -865,11 +861,11 @@ FdoQueryDeviceRelations(
 
     Relations = (PDEVICE_RELATIONS)Irp->IoStatus.Information;
 
+    __FdoAcquireMutex(Fdo);
+
     if (Relations->Count != 0)
         __FdoEnumerate(Fdo, Relations);
 
-    __FdoAcquireMutex(Fdo);
-
     Count = 0;
     for (ListEntry = Fdo->Dx->ListEntry.Flink;
          ListEntry != &Fdo->Dx->ListEntry;
-- 
2.1.1


_______________________________________________
win-pv-devel mailing list
win-pv-devel@xxxxxxxxxxxxxxxxxxxx
http://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.