diff options
author | Christopher Ferris <cferris@google.com> | 2015-01-26 12:53:20 -0800 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2015-01-26 12:53:20 -0800 |
commit | 3ed8ef02ede8539dc80adc3e6cf5650a80650763 (patch) | |
tree | 5cec266eac5e2eea49cc5512a8c19f65c3a05148 /minadbd | |
parent | 9e3cce50a3a571fcdc6a0a28da81ef00071ccb4f (diff) | |
download | bootable_recovery-3ed8ef02ede8539dc80adc3e6cf5650a80650763.zip bootable_recovery-3ed8ef02ede8539dc80adc3e6cf5650a80650763.tar.gz bootable_recovery-3ed8ef02ede8539dc80adc3e6cf5650a80650763.tar.bz2 |
Fix the v2 descriptor handling.
There was a misinterpretation of how the v2 header works. The flags
in the header indicate what is in the rest of the structure.
Bug: 19127803
Change-Id: I83fd93df1df196300a80ddeb3b49ca7851ffcfb8
Diffstat (limited to 'minadbd')
-rw-r--r-- | minadbd/usb_linux_client.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/minadbd/usb_linux_client.c b/minadbd/usb_linux_client.c index e7d3c48..b3a38dc 100644 --- a/minadbd/usb_linux_client.c +++ b/minadbd/usb_linux_client.c @@ -69,14 +69,10 @@ struct desc_v1 { } __attribute__((packed)); struct desc_v2 { - struct usb_functionfs_descs_head_v2 { - __le32 magic; - __le32 length; - __le32 flags; - __le32 fs_count; - __le32 hs_count; - __le32 ss_count; - } __attribute__((packed)) header; + struct usb_functionfs_descs_head_v2 header; + // The rest of the structure depends on the flags in the header. + __le32 fs_count; + __le32 hs_count; struct func_desc fs_descs, hs_descs; } __attribute__((packed)); @@ -304,9 +300,8 @@ static void init_functionfs(struct usb_handle *h) v2_descriptor.header.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC_V2); v2_descriptor.header.length = cpu_to_le32(sizeof(v2_descriptor)); v2_descriptor.header.flags = FUNCTIONFS_HAS_FS_DESC | FUNCTIONFS_HAS_HS_DESC; - v2_descriptor.header.fs_count = 3; - v2_descriptor.header.hs_count = 3; - v2_descriptor.header.ss_count = 0; + v2_descriptor.fs_count = 3; + v2_descriptor.hs_count = 3; v2_descriptor.fs_descs = fs_descriptors; v2_descriptor.hs_descs = hs_descriptors; |