Zebediah Figura : wineusb.sys: Fully initialize the device before adding it to the device list.

Alexandre Julliard julliard at winehq.org
Mon Jul 11 15:51:38 CDT 2022


Module: wine
Branch: master
Commit: 1215bc805f50b7c3d11a89656d175be114059e1e
URL:    https://gitlab.winehq.org/wine/wine/-/commit/1215bc805f50b7c3d11a89656d175be114059e1e

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Sat Jul  9 18:13:37 2022 -0500

wineusb.sys: Fully initialize the device before adding it to the device list.

Do not rely on IoInvalidateDeviceRelations() to initialize the device; it's supposed to be asynchronous.

---

 dlls/wineusb.sys/wineusb.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/wineusb.sys/wineusb.c b/dlls/wineusb.sys/wineusb.c
index 0b8af43a3dc..396591db451 100644
--- a/dlls/wineusb.sys/wineusb.c
+++ b/dlls/wineusb.sys/wineusb.c
@@ -255,11 +255,7 @@ static void add_unix_device(struct unix_device *unix_device)
     device->device_obj = device_obj;
     device->unix_device = unix_device;
     InitializeListHead(&device->irp_list);
-
-    EnterCriticalSection(&wineusb_cs);
-    list_add_tail(&device_list, &device->entry);
     device->removed = FALSE;
-    LeaveCriticalSection(&wineusb_cs);
 
     device->class = device_desc.bDeviceClass;
     device->subclass = device_desc.bDeviceSubClass;
@@ -268,6 +264,10 @@ static void add_unix_device(struct unix_device *unix_device)
     device->product = device_desc.idProduct;
     device->revision = device_desc.bcdDevice;
 
+    EnterCriticalSection(&wineusb_cs);
+    list_add_tail(&device_list, &device->entry);
+    LeaveCriticalSection(&wineusb_cs);
+
     if (!(ret = libusb_get_active_config_descriptor(libusb_device, &config_desc)))
     {
         /* Create new devices for interfaces of composite devices.




More information about the wine-cvs mailing list