From 627dc1ffedc9ffb45e53c7a2fd5f508ca36163b9 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 29 Sep 2021 13:35:32 -0400 Subject: [PATCH] USB: Less-than-equals comparison for length and MAX_FRAGMENT_SIZE. We want to continue iterating until we have either reached the end of the vectors or until we know that length is greater than MAX_FRAGMENT_SIZE, so we need <= here, not <. --- src/add-ons/kernel/bus_managers/usb/Transfer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/add-ons/kernel/bus_managers/usb/Transfer.cpp b/src/add-ons/kernel/bus_managers/usb/Transfer.cpp index 71c5eaa17a..591893afe9 100644 --- a/src/add-ons/kernel/bus_managers/usb/Transfer.cpp +++ b/src/add-ons/kernel/bus_managers/usb/Transfer.cpp @@ -96,7 +96,7 @@ Transfer::SetVector(iovec *vector, size_t vectorCount) fBaseAddress = fVector[0].iov_base; size_t length = 0; - for (size_t i = 0; i < fVectorCount && length < USB_MAX_FRAGMENT_SIZE; i++) + for (size_t i = 0; i < fVectorCount && length <= USB_MAX_FRAGMENT_SIZE; i++) length += fVector[i].iov_len; fFragmented = length > USB_MAX_FRAGMENT_SIZE;