]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
usb: isp1760: fix qtd fill length
authorRui Miguel Silva <rui.silva@linaro.org>
Fri, 27 Aug 2021 13:11:51 +0000 (14:11 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Aug 2021 14:11:38 +0000 (16:11 +0200)
When trying to send bulks bigger than the biggest block size
we need to split them over several qtd. Fix this limiting the
maximum qtd size to largest block size.

Reported-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Link: https://lore.kernel.org/r/20210827131154.4151862-3-rui.silva@linaro.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/isp1760/isp1760-hcd.c

index b3a55c5d2155852aa677e1ab2e105ec5bba0cc40..fba21122bb00b9c86ac27b49085c0703f9b6835c 100644 (file)
@@ -1829,9 +1829,11 @@ static void packetize_urb(struct usb_hcd *hcd,
                        goto cleanup;
 
                if (len > mem->blocks_size[ISP176x_BLOCK_NUM - 1])
-                       len = mem->blocks_size[ISP176x_BLOCK_NUM - 1];
+                       this_qtd_len = mem->blocks_size[ISP176x_BLOCK_NUM - 1];
+               else
+                       this_qtd_len = len;
 
-               this_qtd_len = qtd_fill(qtd, buf, len);
+               this_qtd_len = qtd_fill(qtd, buf, this_qtd_len);
                list_add_tail(&qtd->qtd_list, head);
 
                len -= this_qtd_len;