am dbb7c46d: Merge "ADB on linux: Handle USB SuperSpeed extra Descriptors"

* commit 'dbb7c46d686e55aabd52a8e4c5494768c8955a2f':
  ADB on linux: Handle USB SuperSpeed extra Descriptors
This commit is contained in:
Elliott Hughes 2014-12-09 14:40:57 +00:00 committed by Android Git Automerger
commit c6e34ed6f9

View file

@ -237,8 +237,20 @@ static void find_usb_device(const char *base,
// looks like ADB...
ep1 = (struct usb_endpoint_descriptor *)bufptr;
bufptr += USB_DT_ENDPOINT_SIZE;
// For USB 3.0 SuperSpeed devices, skip potential
// USB 3.0 SuperSpeed Endpoint Companion descriptor
if (bufptr+2 <= devdesc + desclength &&
bufptr[0] == USB_DT_SS_EP_COMP_SIZE &&
bufptr[1] == USB_DT_SS_ENDPOINT_COMP) {
bufptr += USB_DT_SS_EP_COMP_SIZE;
}
ep2 = (struct usb_endpoint_descriptor *)bufptr;
bufptr += USB_DT_ENDPOINT_SIZE;
if (bufptr+2 <= devdesc + desclength &&
bufptr[0] == USB_DT_SS_EP_COMP_SIZE &&
bufptr[1] == USB_DT_SS_ENDPOINT_COMP) {
bufptr += USB_DT_SS_EP_COMP_SIZE;
}
if (bufptr > devdesc + desclength ||
ep1->bLength != USB_DT_ENDPOINT_SIZE ||