aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2009-09-08 16:20:16 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-23 09:46:18 -0400
commit6682bb39e111b34290e25c4d275c5bcf8bbccbe1 (patch)
treeb98c9f32ac12fb8c7957d39fd2acc42f8f4ae47e
parent624defa12f304b4d11eda309bc207fa5a1900d0f (diff)
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.c2
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,
105 ep->ss_ep_comp->extralen = i; 105 ep->ss_ep_comp->extralen = i;
106 buffer += i; 106 buffer += i;
107 size -= i; 107 size -= i;
108 retval = buffer - buffer_start + i; 108 retval = buffer - buffer_start;
109 if (num_skipped > 0) 109 if (num_skipped > 0)
110 dev_dbg(ddev, "skipped %d descriptor%s after %s\n", 110 dev_dbg(ddev, "skipped %d descriptor%s after %s\n",
111 num_skipped, plural(num_skipped), 111 num_skipped, plural(num_skipped),