[PATCH 4/4] usb: dwc3: gadget: ignore endpoint IRQs when endpoint is disabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



By the time we're disabling the endpoint, HW
could already have posted more events to our
event buffer. In that case, if we will receive
endpoint events with a disabled endpoint.

In order to protect ourselves from that situation,
we simply ignore endpoint interrupts for a
disabled endpoint.

Signed-off-by: Felipe Balbi <balbi@xxxxxx>
---
 drivers/usb/dwc3/gadget.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 52d0f67..df55409 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1768,6 +1768,13 @@ static void dwc3_endpoint_interrupt(struct dwc3 *dwc,
 
 	dep = dwc->eps[epnum];
 
+	if (!(dep->flags & DWC3_EP_ENABLED)) {
+		dev_WARN_ONCE(dwc->dev, true, "%s while %s not enabled\n",
+				dwc3_ep_event_string(event->endpoint_event),
+				dep->name);
+		return;
+	}
+
 	dev_vdbg(dwc->dev, "%s: %s\n", dep->name,
 			dwc3_ep_event_string(event->endpoint_event));
 
-- 
1.7.10.3

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


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux