On Tue, 10 Mar 2015, Alan Stern wrote:

> However, if a driver tries to issue an endpoint reset while there are
> still some URBs queued, it is a bug.  Host controller drivers shouldn't
> have to worry about this -- xhci_endpoint_reset() should simply return 
> an error if the endpoint ring isn't empty.
> 
> I suppose we should check for this in the USB core.  I'll write a patch
> and CC: you.

Here it is.  Does this mean your new patch isn't needed?

Jörg, what do you get if you test with this patch applied?

Alan Stern



Index: usb-3.19/drivers/usb/core/hcd.c
===================================================================
--- usb-3.19.orig/drivers/usb/core/hcd.c
+++ usb-3.19/drivers/usb/core/hcd.c
@@ -2018,6 +2018,14 @@ void usb_hcd_reset_endpoint(struct usb_d
 {
        struct usb_hcd *hcd = bus_to_hcd(udev->bus);
 
+       /* Resetting an active endpoint is a bug! */
+       if (!list_empty(&ep->urb_list)) {
+               WARN(1, "%s ep %02x: attempt to reset active endpoint\n",
+                               dev_name(&udev->dev),
+                               ep->desc.bEndpointAddress);
+               return;
+       }
+
        if (hcd->driver->endpoint_reset)
                hcd->driver->endpoint_reset(hcd, ep);
        else {

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to