Re: [PATCH] usb: dwc3: gadget: Properly check last unaligned/zero chain TRB

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

 



Hi Felipe,

On 8/2/2018 8:17 PM, Thinh Nguyen wrote:
> Current check for the last extra TRB for zero and unaligned transfers
> does not account for isoc OUT. The last TRB of the Buffer Descriptor for
> isoc OUT transfers will be retired with HWO=0. As a result, we won't
> return early. The req->remaining will be updated to include the BUFSIZ
> count of the extra TRB, and the actual number of transferred bytes
> calculation will be wrong.
>
> To fix this, check whether it's a short or zero packet and the last TRB
> chain bit to return early.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: c6267a51639b ("usb: dwc3: gadget: align transfers to wMaxPacketSize")
> Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx>
> ---
>  drivers/usb/dwc3/gadget.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
> index 032ea7d709ba..c09e4f784810 100644
> --- a/drivers/usb/dwc3/gadget.c
> +++ b/drivers/usb/dwc3/gadget.c
> @@ -2251,7 +2251,7 @@ static int dwc3_gadget_ep_reclaim_completed_trb(struct dwc3_ep *dep,
>  	 * with one TRB pending in the ring. We need to manually clear HWO bit
>  	 * from that TRB.
>  	 */
> -	if ((req->zero || req->unaligned) && (trb->ctrl & DWC3_TRB_CTRL_HWO)) {
> +	if ((req->zero || req->unaligned) && !(trb->ctrl & DWC3_TRB_CTRL_CHN)) {
>  		trb->ctrl &= ~DWC3_TRB_CTRL_HWO;
>  		return 1;
>  	}

Can you pick up this patch and the patch subject "[PATCH] usb: dwc3:
gadget: fix ISOC TRB type on unaligned transfers" for the next -rc?

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