diff --git a/adb/usb_linux_client.cpp b/adb/usb_linux_client.cpp index ceed8facf..151c0aa11 100644 --- a/adb/usb_linux_client.cpp +++ b/adb/usb_linux_client.cpp @@ -481,7 +481,8 @@ static int usb_ffs_read(usb_handle* h, void* data, int len) { char* buf = static_cast(data); while (len > 0) { - int n = adb_read(h->bulk_out, buf, len); + int read_len = (len > 16384) ? 16384 : len; + int n = adb_read(h->bulk_out, buf, read_len); if (n < 0) { D("ERROR: fd = %d, n = %d: %s", h->bulk_out, n, strerror(errno)); return -1;