| From: Alan Stern <stern@rowland.harvard.edu> |
| Date: Thu, 3 May 2018 11:04:48 -0400 |
| Subject: USB: Accept bulk endpoints with 1024-byte maxpacket |
| |
| commit fb5ee84ea72c5f1b6cabdd1c9d6e8648995ca7c6 upstream. |
| |
| Some non-compliant high-speed USB devices have bulk endpoints with a |
| 1024-byte maxpacket size. Although such endpoints don't work with |
| xHCI host controllers, they do work with EHCI controllers. We used to |
| accept these invalid sizes (with a warning), but we no longer do |
| because of an unintentional change introduced by commit aed9d65ac327 |
| ("USB: validate wMaxPacketValue entries in endpoint descriptors"). |
| |
| This patch restores the old behavior, so that people with these |
| peculiar devices can use them without patching their kernels by hand. |
| |
| Signed-off-by: Alan Stern <stern@rowland.harvard.edu> |
| Suggested-by: Elvinas <elvinas@veikia.lt> |
| Fixes: aed9d65ac327 ("USB: validate wMaxPacketValue entries in endpoint descriptors") |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/usb/core/config.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/usb/core/config.c |
| +++ b/drivers/usb/core/config.c |
| @@ -157,7 +157,9 @@ static const unsigned short full_speed_m |
| static const unsigned short high_speed_maxpacket_maxes[4] = { |
| [USB_ENDPOINT_XFER_CONTROL] = 64, |
| [USB_ENDPOINT_XFER_ISOC] = 1024, |
| - [USB_ENDPOINT_XFER_BULK] = 512, |
| + |
| + /* Bulk should be 512, but some devices use 1024: we will warn below */ |
| + [USB_ENDPOINT_XFER_BULK] = 1024, |
| [USB_ENDPOINT_XFER_INT] = 1024, |
| }; |
| static const unsigned short super_speed_maxpacket_maxes[4] = { |