Commit bca243b1 authored by Johan Hovold's avatar Johan Hovold Committed by Mauro Carvalho Chehab

media: flexcop-usb: fix endpoint sanity check

commit 1b976fc6 ("media: b2c2-flexcop-usb: add sanity checking") added
an endpoint sanity check to address a NULL-pointer dereference on probe.
Unfortunately the check was done on the current altsetting which was later
changed.

Fix this by moving the sanity check to after the altsetting is changed.

Fixes: 1b976fc6 ("media: b2c2-flexcop-usb: add sanity checking")
Cc: Oliver Neukum <oneukum@suse.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 7e0cfdad
...@@ -511,6 +511,9 @@ static int flexcop_usb_init(struct flexcop_usb *fc_usb) ...@@ -511,6 +511,9 @@ static int flexcop_usb_init(struct flexcop_usb *fc_usb)
return ret; return ret;
} }
if (fc_usb->uintf->cur_altsetting->desc.bNumEndpoints < 1)
return -ENODEV;
switch (fc_usb->udev->speed) { switch (fc_usb->udev->speed) {
case USB_SPEED_LOW: case USB_SPEED_LOW:
err("cannot handle USB speed because it is too slow."); err("cannot handle USB speed because it is too slow.");
...@@ -544,9 +547,6 @@ static int flexcop_usb_probe(struct usb_interface *intf, ...@@ -544,9 +547,6 @@ static int flexcop_usb_probe(struct usb_interface *intf,
struct flexcop_device *fc = NULL; struct flexcop_device *fc = NULL;
int ret; int ret;
if (intf->cur_altsetting->desc.bNumEndpoints < 1)
return -ENODEV;
if ((fc = flexcop_device_kmalloc(sizeof(struct flexcop_usb))) == NULL) { if ((fc = flexcop_device_kmalloc(sizeof(struct flexcop_usb))) == NULL) {
err("out of memory\n"); err("out of memory\n");
return -ENOMEM; return -ENOMEM;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment