diff options
author | Jean-Francois Moine <moinejf@free.fr> | 2009-04-21 12:57:31 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 17:20:54 -0400 |
commit | 30d35e49509345a3bee778e0cee8545cd70853e2 (patch) | |
tree | a6f3b9eebc7d339de0d543e9e9b3e53c01409db9 /drivers/media/video/gspca/gspca.c | |
parent | 6929dc6b30dc3a6c9c411f677a11b866e8dd28aa (diff) |
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/gspca.c')
-rw-r--r-- | drivers/media/video/gspca/gspca.c | 3 |
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, | |||
449 | for (i = 0; i < alt->desc.bNumEndpoints; i++) { | 449 | for (i = 0; i < alt->desc.bNumEndpoints; i++) { |
450 | ep = &alt->endpoint[i]; | 450 | ep = &alt->endpoint[i]; |
451 | attr = ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; | 451 | attr = ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK; |
452 | if (attr == xfer) | 452 | if (attr == xfer |
453 | && ep->desc.wMaxPacketSize != 0) | ||
453 | return ep; | 454 | return ep; |
454 | } | 455 | } |
455 | return NULL; | 456 | return NULL; |