In case some gadget driver tries to enable an endpoint
which is already enabled, we print a nice WARN so we
can track broken gadget drivers. The only problem is that
we're printing the WARN when we already changed endpoint's
name, which would result in endpoints named as:

ep1in-bulk-bulk-bulk-bulk-bulk-bulk-bulk

To prevent that, we will continue to print the WARN,
but do so before changing endpoint's name and return
early.

Signed-off-by: Felipe Balbi <ba...@ti.com>
---
 drivers/usb/dwc3/gadget.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index dd5945c..029cf06 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -642,6 +642,12 @@ static int dwc3_gadget_ep_enable(struct usb_ep *ep,
        dep = to_dwc3_ep(ep);
        dwc = dep->dwc;
 
+       if (dep->flags & DWC3_EP_ENABLED) {
+               dev_WARN_ONCE(dwc->dev, true, "%s is already enabled\n",
+                               dep->name);
+               return 0;
+       }
+
        switch (usb_endpoint_type(desc)) {
        case USB_ENDPOINT_XFER_CONTROL:
                strlcat(dep->name, "-control", sizeof(dep->name));
@@ -659,12 +665,6 @@ static int dwc3_gadget_ep_enable(struct usb_ep *ep,
                dev_err(dwc->dev, "invalid endpoint transfer type\n");
        }
 
-       if (dep->flags & DWC3_EP_ENABLED) {
-               dev_WARN_ONCE(dwc->dev, true, "%s is already enabled\n",
-                               dep->name);
-               return 0;
-       }
-
        dev_vdbg(dwc->dev, "Enabling %s\n", dep->name);
 
        spin_lock_irqsave(&dwc->lock, flags);
-- 
1.7.12.rc2

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

Reply via email to