lkml.org 
[lkml]   [2018]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 005/110] usb: dwc3: gadget: Properly check last unaligned/zero chain TRB
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>

    commit ba3a51ac32ebcf8d0a54b37f1af268ad8a31c52f upstream.

    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.

    Fixes: c6267a51639b ("usb: dwc3: gadget: align transfers to wMaxPacketSize")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/usb/dwc3/gadget.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/drivers/usb/dwc3/gadget.c
    +++ b/drivers/usb/dwc3/gadget.c
    @@ -2250,7 +2250,7 @@ static int dwc3_gadget_ep_reclaim_comple
    * 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;
    }

    \
     
     \ /
      Last update: 2018-11-29 15:30    [W:4.130 / U:0.740 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site