summaryrefslogtreecommitdiffstats
path: root/fastboot/usb_linux.c
diff options
context:
space:
mode:
authorJP Abgrall <jpa@google.com>2012-04-18 15:30:56 -0700
committerJP Abgrall <jpa@google.com>2012-04-18 15:31:23 -0700
commitf8ff3a5ae21ce34f22928709cc6f992ff2fdd56e (patch)
tree991927028fba761d8327d96eac6a4d906eeb1dd2 /fastboot/usb_linux.c
parent545ab46063f083239b29e59b8b491656d93f2a38 (diff)
downloadsystem_core-f8ff3a5ae21ce34f22928709cc6f992ff2fdd56e.zip
system_core-f8ff3a5ae21ce34f22928709cc6f992ff2fdd56e.tar.gz
system_core-f8ff3a5ae21ce34f22928709cc6f992ff2fdd56e.tar.bz2
fastboot: Keep borked bootloaders happy by shrinking URB len.
Some devices will fail to return the requested data if the final URB len of the request to > 255. So shrink the current data buffer from 128 to 127 in the acse of getting the serial number seems to work just fine. Change-Id: Ic24e6c86ec93f002dc721d92309b3f880f281f20
Diffstat (limited to 'fastboot/usb_linux.c')
-rw-r--r--fastboot/usb_linux.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fastboot/usb_linux.c b/fastboot/usb_linux.c
index 85187de..83c6de9 100644
--- a/fastboot/usb_linux.c
+++ b/fastboot/usb_linux.c
@@ -131,7 +131,9 @@ static int filter_usb_device(int fd, char *ptr, int len, int writable,
info.serial_number[0] = 0;
if (dev->iSerialNumber) {
struct usbdevfs_ctrltransfer ctrl;
- __u16 buffer[128];
+ // Keep it short enough because some bootloaders are borked if the URB len is > 255
+ // 128 is too big by 1.
+ __u16 buffer[127];
int result;
memset(buffer, 0, sizeof(buffer));