diff options
Diffstat (limited to 'drivers/usb/class/cdc-acm.c')
| -rw-r--r-- | drivers/usb/class/cdc-acm.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index 3e15add665e2..5c8f58114677 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -1142,11 +1142,16 @@ static int acm_probe(struct usb_interface *intf,  	}  	while (buflen > 0) { +		elength = buffer[0]; +		if (!elength) { +			dev_err(&intf->dev, "skipping garbage byte\n"); +			elength = 1; +			goto next_desc; +		}  		if (buffer[1] != USB_DT_CS_INTERFACE) {  			dev_err(&intf->dev, "skipping garbage\n");  			goto next_desc;  		} -		elength = buffer[0];  		switch (buffer[2]) {  		case USB_CDC_UNION_TYPE: /* we've found it */ |