diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index d7cc25635afc..9d4a79ad4306 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1787,7 +1787,8 @@ static int dwc3_gadget_ep_dequeue(struct usb_ep *ep, /* If ep isn't started, then there's no end transfer * pending */ - if (!(dep->flags & DWC3_EP_END_TRANSFER_PENDING)) + if ((dep->flags & DWC3_EP_TRANSFER_STARTED) && + !(dep->flags & DWC3_EP_END_TRANSFER_PENDING)) dwc3_gadget_ep_cleanup_cancelled_requests(dep); goto out; @@ -3461,8 +3462,11 @@ int dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, bool interrupt) ret = dwc3_send_gadget_ep_cmd(dep, cmd, ¶ms); WARN_ON_ONCE(ret); dep->resource_index = 0; - - dbg_log_string("%s(%d): endxfer ret:%d", dep->name, dep->number, ret); + if (ret == -ETIMEDOUT) { + dbg_log_string("%s(%d): endxfer ret:%d", + dep->name, dep->number, ret); + return ret; + } if (!interrupt) dep->flags &= ~DWC3_EP_TRANSFER_STARTED;