Hi Thinh, Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> writes: > Hi Felipe, > > Thinh Nguyen wrote: >> A request may not be completed because not all the TRBs are prepared for >> it. This happens when we run out of available TRBs. When some TRBs are >> completed, the driver needs to prepare the rest of the TRBs for the >> request. The check dwc3_gadget_ep_request_completed() shouldn't be >> checking the amount of data received but rather the number of pending >> TRBs. Revise this request completion check. >> >> Cc: stable@xxxxxxxxxxxxxxx >> Fixes: e0c42ce590fe ("usb: dwc3: gadget: simplify IOC handling") >> Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx> >> --- >> Changes in v2: >> - Add Cc: stable tag >> >> drivers/usb/dwc3/gadget.c | 12 ++---------- >> 1 file changed, 2 insertions(+), 10 deletions(-) >> >> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c >> index 1a4fc03742aa..c45853b14cff 100644 >> --- a/drivers/usb/dwc3/gadget.c >> +++ b/drivers/usb/dwc3/gadget.c >> @@ -2550,14 +2550,7 @@ static int dwc3_gadget_ep_reclaim_trb_linear(struct dwc3_ep *dep, >> >> static bool dwc3_gadget_ep_request_completed(struct dwc3_request *req) >> { >> - /* >> - * For OUT direction, host may send less than the setup >> - * length. Return true for all OUT requests. >> - */ >> - if (!req->direction) >> - return true; >> - >> - return req->request.actual == req->request.length; >> + return req->num_pending_sgs == 0; >> } >> >> static int dwc3_gadget_ep_cleanup_completed_request(struct dwc3_ep *dep, >> @@ -2581,8 +2574,7 @@ static int dwc3_gadget_ep_cleanup_completed_request(struct dwc3_ep *dep, >> >> req->request.actual = req->request.length - req->remaining; >> >> - if (!dwc3_gadget_ep_request_completed(req) || >> - req->num_pending_sgs) { >> + if (!dwc3_gadget_ep_request_completed(req)) { >> __dwc3_gadget_kick_transfer(dep); >> goto out; >> } > > Since you'll be picking this up for the rc cycle for your fix patches, > should I split this series to resend and wait for this patch to be > merged first before I resend the patch 2/2? > Let me know how you'd like to proceed. That's okay. Usually it's better to have the series split, but since it's only two patches, I can manage :-) I'll just leave patch 2 unread :-) -- balbi
Attachment:
signature.asc
Description: PGP signature