Re: [PATCH v2 1/2] usb: dwc3: gadget: Fix request completion check

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

Thanks,
Thinh




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux