Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 733e5740 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents 5e999608 3ef97296
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -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;