lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 136/214] usb: dwc3: gadget: Check MPS of the request length
    Date
    From: Thinh Nguyen <Thinh.Nguyen@synopsys.com>

    commit ca3df3468eec87f6374662f7de425bc44c3810c1 upstream.

    When preparing for SG, not all the entries are prepared at once. When
    resume, don't use the remaining request length to calculate for MPS
    alignment. Use the entire request->length to do that.

    Cc: stable@vger.kernel.org
    Fixes: 5d187c0454ef ("usb: dwc3: gadget: Don't setup more than requested")
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Signed-off-by: Felipe Balbi <balbi@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/usb/dwc3/gadget.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/usb/dwc3/gadget.c
    +++ b/drivers/usb/dwc3/gadget.c
    @@ -1057,6 +1057,8 @@ static void dwc3_prepare_one_trb_sg(stru
    struct scatterlist *s;
    int i;
    unsigned int length = req->request.length;
    + unsigned int maxp = usb_endpoint_maxp(dep->endpoint.desc);
    + unsigned int rem = length % maxp;
    unsigned int remaining = req->request.num_mapped_sgs
    - req->num_queued_sgs;

    @@ -1068,8 +1070,6 @@ static void dwc3_prepare_one_trb_sg(stru
    length -= sg_dma_len(s);

    for_each_sg(sg, s, remaining, i) {
    - unsigned int maxp = usb_endpoint_maxp(dep->endpoint.desc);
    - unsigned int rem = length % maxp;
    unsigned int trb_length;
    unsigned chain = true;


    \
     
     \ /
      Last update: 2020-11-03 22:31    [W:4.573 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site