diff options
author | Sarah Sharp <sarah.a.sharp@linux.intel.com> | 2009-09-08 22:20:16 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-09-23 15:46:18 +0200 |
commit | 6682bb39e111b34290e25c4d275c5bcf8bbccbe1 (patch) | |
tree | b98c9f32ac12fb8c7957d39fd2acc42f8f4ae47e | |
parent | USB: xhci: Support interrupt transfers. (diff) | |
download | linux-6682bb39e111b34290e25c4d275c5bcf8bbccbe1.tar.xz linux-6682bb39e111b34290e25c4d275c5bcf8bbccbe1.zip |
USB: Fix SS endpoint companion descriptor parsing.
When there's a descriptor after the SuperSpeed endpoint companion
descriptor, the previous code would have skipped over twice the length it
was supposed to. This code fixes crashes seen with UASP devices (which
have a UASP descriptor after the SS endpoint companion descriptor).
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/core/config.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/core/config.c b/drivers/usb/core/config.c index a16c538d0132..0d3af6a6ee49 100644 --- a/drivers/usb/core/config.c +++ b/drivers/usb/core/config.c @@ -105,7 +105,7 @@ static int usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno, ep->ss_ep_comp->extralen = i; buffer += i; size -= i; - retval = buffer - buffer_start + i; + retval = buffer - buffer_start; if (num_skipped > 0) dev_dbg(ddev, "skipped %d descriptor%s after %s\n", num_skipped, plural(num_skipped), |