Merge "usb: dwc3: gadget: Handle race between remove_request & ep_dequeue"

This commit is contained in:
qctecmdr 2021-04-27 22:49:32 -07:00 • committed by Gerrit - the friendly Code Review server
commit 733e5740b2

View file

@ -1851,7 +1851,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;
@ -3582,8 +3583,11 @@ int dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, bool interrupt)
ret = dwc3_send_gadget_ep_cmd(dep, cmd, &params);
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;