Commit b2b6d601 authored by Felipe Balbi's avatar Felipe Balbi
Browse files

usb: dwc3: gadget: prevent dwc3_request from being queued twice



Queueing the same request twice can introduce hard-to-debug
problems. At least one function driver - Android's f_mtp.c - is known
to cause this problem.

While that function is out-of-tree, this is a problem that's easy
enough to avoid.

Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
parent a3af5e3a
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -1437,6 +1437,11 @@ static int __dwc3_gadget_ep_queue(struct dwc3_ep *dep, struct dwc3_request *req)
				&req->request, req->dep->name))
		return -EINVAL;

	if (WARN(req->status < DWC3_REQUEST_STATUS_COMPLETED,
				"%s: request %pK already in flight\n",
				dep->name, &req->request))
		return -EINVAL;

	pm_runtime_get(dwc->dev);

	req->request.actual	= 0;