From bfcb2ec0f821ba30f725bd0e2a2169ab230af1b4 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Fri, 30 Dec 2011 08:20:50 -0300 Subject: [PATCH] --- yaml --- r: 285680 b: refs/heads/master c: d0d3435b212f88aebee6a06e002e4fd3b487a918 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/media/video/gspca/gspca.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 5394d4828d2c..095c73b3bae7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 66957b864646e2ea0aebc66d1173f39a63509a19 +refs/heads/master: d0d3435b212f88aebee6a06e002e4fd3b487a918 diff --git a/trunk/drivers/media/video/gspca/gspca.c b/trunk/drivers/media/video/gspca/gspca.c index 5b8f4fc5d1c6..a82d45e57896 100644 --- a/trunk/drivers/media/video/gspca/gspca.c +++ b/trunk/drivers/media/video/gspca/gspca.c @@ -698,12 +698,17 @@ static int build_isoc_ep_tb(struct gspca_dev *gspca_dev, USB_ENDPOINT_XFER_ISOC); if (ep == NULL) continue; + if (ep->desc.bInterval == 0) { + pr_err("alt %d iso endp with 0 interval\n", j); + continue; + } psize = le16_to_cpu(ep->desc.wMaxPacketSize); psize = (psize & 0x07ff) * (1 + ((psize >> 11) & 3)); - bandwidth = psize * ep->desc.bInterval * 1000; + bandwidth = psize * 1000; if (gspca_dev->dev->speed == USB_SPEED_HIGH || gspca_dev->dev->speed == USB_SPEED_SUPER) bandwidth *= 8; + bandwidth /= 1 << (ep->desc.bInterval - 1); if (bandwidth <= last_bw) continue; if (bandwidth < ep_tb->bandwidth) {