| From c45cb2da6288b21d2e5415354ff98cd9690ac79a Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Fri, 3 Jan 2020 17:35:08 +0100 |
| Subject: [PATCH] media: flexcop-usb: fix endpoint sanity check |
| |
| commit bca243b1ce0e46be26f7c63b5591dfbb41f558e5 upstream. |
| |
| commit 1b976fc6d684 ("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: 1b976fc6d684 ("media: b2c2-flexcop-usb: add sanity checking") |
| Cc: Oliver Neukum <oneukum@suse.com> |
| Cc: stable <stable@vger.kernel.org> |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Sean Young <sean@mess.org> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/media/usb/b2c2/flexcop-usb.c b/drivers/media/usb/b2c2/flexcop-usb.c |
| index 039963a7765b..198ddfb8d2b1 100644 |
| --- a/drivers/media/usb/b2c2/flexcop-usb.c |
| +++ b/drivers/media/usb/b2c2/flexcop-usb.c |
| @@ -511,6 +511,9 @@ static int flexcop_usb_init(struct flexcop_usb *fc_usb) |
| return ret; |
| } |
| |
| + if (fc_usb->uintf->cur_altsetting->desc.bNumEndpoints < 1) |
| + return -ENODEV; |
| + |
| switch (fc_usb->udev->speed) { |
| case USB_SPEED_LOW: |
| err("cannot handle USB speed because it is too slow."); |
| @@ -544,9 +547,6 @@ static int flexcop_usb_probe(struct usb_interface *intf, |
| struct flexcop_device *fc = NULL; |
| int ret; |
| |
| - if (intf->cur_altsetting->desc.bNumEndpoints < 1) |
| - return -ENODEV; |
| - |
| if ((fc = flexcop_device_kmalloc(sizeof(struct flexcop_usb))) == NULL) { |
| err("out of memory\n"); |
| return -ENOMEM; |
| -- |
| 2.7.4 |
| |