Skip to content

Commit 7e3054a

Browse files
bmorkgregkh
authored andcommitted
USB: cdc-wdm: Avoid hanging on interface with no USB_CDC_DMM_TYPE
The probe does not strictly require the USB_CDC_DMM_TYPE descriptor, which is a good thing as it makes the driver usable on non-conforming interfaces. A user could e.g. bind to it to a CDC ECM interface by using the new_id and bind sysfs files. But this would fail with a 0 buffer length due to the missing descriptor. Fix by defining a reasonable fallback size: The minimum device receive buffer size required by the CDC WMC standard, revision 1.1 Signed-off-by: Bjørn Mork <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 8143a89 commit 7e3054a

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

drivers/usb/class/cdc-wdm.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ MODULE_DEVICE_TABLE (usb, wdm_ids);
5757

5858
#define WDM_MAX 16
5959

60+
/* CDC-WMC r1.1 requires wMaxCommand to be "at least 256 decimal (0x100)" */
61+
#define WDM_DEFAULT_BUFSIZE 256
6062

6163
static DEFINE_MUTEX(wdm_mutex);
6264

@@ -602,7 +604,7 @@ static int wdm_probe(struct usb_interface *intf, const struct usb_device_id *id)
602604
struct usb_cdc_dmm_desc *dmhd;
603605
u8 *buffer = intf->altsetting->extra;
604606
int buflen = intf->altsetting->extralen;
605-
u16 maxcom = 0;
607+
u16 maxcom = WDM_DEFAULT_BUFSIZE;
606608

607609
if (!buffer)
608610
goto out;

0 commit comments

Comments
 (0)