|
@@ -1501,7 +1501,14 @@ static int usbvision_probe(struct usb_interface *intf,
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < usbvision->num_alt; i++) {
|
|
|
- u16 tmp = le16_to_cpu(uif->altsetting[i].endpoint[1].desc.
|
|
|
+ u16 tmp;
|
|
|
+
|
|
|
+ if (uif->altsetting[i].desc.bNumEndpoints < 2) {
|
|
|
+ ret = -ENODEV;
|
|
|
+ goto err_pkt;
|
|
|
+ }
|
|
|
+
|
|
|
+ tmp = le16_to_cpu(uif->altsetting[i].endpoint[1].desc.
|
|
|
wMaxPacketSize);
|
|
|
usbvision->alt_max_pkt_size[i] =
|
|
|
(tmp & 0x07ff) * (((tmp & 0x1800) >> 11) + 1);
|