[PATCH 3/4] wineusb.sys: Do not store a reference to the libusb device in the usb_device structure.
Zebediah Figura
wine at gitlab.winehq.org
Fri Jul 1 00:55:03 CDT 2022
From: Zebediah Figura <zfigura at codeweavers.com>
Retrieve it from the handle if necessary.
For simplicity.
---
dlls/wineusb.sys/wineusb.c | 11 +----------
1 file changed, 1 insertion(+), 10 deletions(-)
diff --git a/dlls/wineusb.sys/wineusb.c b/dlls/wineusb.sys/wineusb.c
index f5c727fa823..59d8bd93fc4 100644
--- a/dlls/wineusb.sys/wineusb.c
+++ b/dlls/wineusb.sys/wineusb.c
@@ -86,7 +86,6 @@ struct usb_device
uint16_t vendor, product, revision;
- libusb_device *libusb_device;
libusb_device_handle *handle;
LIST_ENTRY irp_list;
@@ -114,7 +113,6 @@ static void add_usb_interface(struct usb_device *parent, const struct libusb_int
device->device_obj = device_obj;
device->parent = parent;
device->handle = parent->handle;
- device->libusb_device = parent->libusb_device;
device->interface_index = desc->bInterfaceNumber;
device->class = desc->bInterfaceClass;
device->subclass = desc->bInterfaceSubClass;
@@ -166,7 +164,6 @@ static void add_usb_device(libusb_device *libusb_device)
device = device_obj->DeviceExtension;
device->device_obj = device_obj;
- device->libusb_device = libusb_ref_device(libusb_device);
device->handle = handle;
InitializeListHead(&device->irp_list);
@@ -227,7 +224,7 @@ static void remove_usb_device(libusb_device *libusb_device)
EnterCriticalSection(&wineusb_cs);
LIST_FOR_EACH_ENTRY(device, &device_list, struct usb_device, entry)
{
- if (device->libusb_device == libusb_device)
+ if (libusb_get_device(device->handle) == libusb_device)
{
if (!device->removed)
{
@@ -364,10 +361,7 @@ static NTSTATUS fdo_pnp(IRP *irp)
{
assert(!device->removed);
if (!device->parent)
- {
- libusb_unref_device(device->libusb_device);
libusb_close(device->handle);
- }
list_remove(&device->entry);
IoDeleteDevice(device->device_obj);
}
@@ -564,10 +558,7 @@ static NTSTATUS pdo_pnp(DEVICE_OBJECT *device_obj, IRP *irp)
remove_pending_irps(device);
if (!device->parent)
- {
- libusb_unref_device(device->libusb_device);
libusb_close(device->handle);
- }
IoDeleteDevice(device->device_obj);
ret = STATUS_SUCCESS;
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/356
More information about the wine-devel
mailing list