aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/gspca
diff options
context:
space:
mode:
authorJean-Francois Moine <moinejf@free.fr>2009-04-21 13:57:31 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 18:20:54 -0300
commit30d35e49509345a3bee778e0cee8545cd70853e2 (patch)
treea6f3b9eebc7d339de0d543e9e9b3e53c01409db9 /drivers/media/video/gspca
parentV4L/DVB (11710): gspca - main: Webcams cannot do both isoc and bulk image transfers. (diff)
downloadlinux-dev-30d35e49509345a3bee778e0cee8545cd70853e2.tar.xz
linux-dev-30d35e49509345a3bee778e0cee8545cd70853e2.zip
V4L/DVB (11711): gspca - main: Fix a crash when no bandwidth available
When the bandwidth is not wide enough, the transfer endpoint may be set to the one of the alternate setting 0. This one may be null and this causes a divide by 0 oops. Reported-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/gspca')
-rw-r--r--drivers/media/video/gspca/gspca.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c
index 873e95580407..efa4dd349f60 100644
--- a/drivers/media/video/gspca/gspca.c
+++ b/drivers/media/video/gspca/gspca.c
@@ -449,7 +449,8 @@ static struct usb_host_endpoint *alt_xfer(struct usb_host_interface *alt,
for (i = 0; i < alt->desc.bNumEndpoints; i++) {
ep = &alt->endpoint[i];
attr = ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
- if (attr == xfer)
+ if (attr == xfer
+ && ep->desc.wMaxPacketSize != 0)
return ep;
}
return NULL;