lx_emul: do not reset ep in usb flush transfers

Certain USB devices do not react anymore after an endpoint reset
in the use case of USB devices passed through to a virtual machine.
When investigating the only USB session client that needs the
flush transfers request - namely the Qemu xhci model used in
VirtualBox - there seems to be no need to reset the endpoint in fact.

Fix genodelabs/genode#5050
This commit is contained in:
Stefan Kalkowski 2023-11-08 10:37:01 +01:00 committed by Christian Helmuth
parent 4ecae91fc3
commit 62492f3cd2

View File

@ -535,8 +535,7 @@ handle_flush_request(unsigned char ep,
struct file * file = open_usb_dev(udev);
struct usb_per_dev_data * d = dev_get_drvdata(&udev->dev);
struct usb_urb_in_flight *iter, *next;
unsigned int e = ep;
int ret = -ENODEV;
int ret = 0;
/* discard URBs of the related EP in reverse order, like libusb is doing */
list_for_each_entry_safe_reverse(iter, next, &d->urblist, le) {
@ -547,9 +546,6 @@ handle_flush_request(unsigned char ep,
}
}
ret = usbdev_file_operations->unlocked_ioctl(file,
USBDEVFS_RESETEP,
(unsigned long)&e);
genode_usb_ack_request(session, request, handle_return_code, &ret);
}