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 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


[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