media: flexcop-usb: fix endpoint type check

Message ID 20220609135341.19941-1-johan@kernel.org (mailing list archive)
State Accepted
Headers
Series media: flexcop-usb: fix endpoint type check |

Commit Message

Johan Hovold June 9, 2022, 1:53 p.m. UTC
  Commit d725d20e81c2 ("media: flexcop-usb: sanity checking of endpoint
type") tried to add an endpoint type sanity check for the single
isochronous endpoint but instead broke the driver by checking the wrong
descriptor or random data beyond the last endpoint descriptor.

Make sure to check the right endpoint descriptor.

Fixes: d725d20e81c2 ("media: flexcop-usb: sanity checking of endpoint type")
Cc: Oliver Neukum <oneukum@suse.com>
Cc: stable@vger.kernel.org	# 5.9
Reported-by: Dongliang Mu <mudongliangabcd@gmail.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
---
 drivers/media/usb/b2c2/flexcop-usb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Johan Hovold July 11, 2022, 9:49 a.m. UTC | #1
On Thu, Jun 09, 2022 at 03:53:41PM +0200, Johan Hovold wrote:
> Commit d725d20e81c2 ("media: flexcop-usb: sanity checking of endpoint
> type") tried to add an endpoint type sanity check for the single
> isochronous endpoint but instead broke the driver by checking the wrong
> descriptor or random data beyond the last endpoint descriptor.
> 
> Make sure to check the right endpoint descriptor.
> 
> Fixes: d725d20e81c2 ("media: flexcop-usb: sanity checking of endpoint type")
> Cc: Oliver Neukum <oneukum@suse.com>
> Cc: stable@vger.kernel.org	# 5.9
> Reported-by: Dongliang Mu <mudongliangabcd@gmail.com>
> Signed-off-by: Johan Hovold <johan@kernel.org>
> ---

I haven't received any notification about this one being added to any
tree and the status is still set to "NEW" in the patch tracker so
sending a reminder.

>  drivers/media/usb/b2c2/flexcop-usb.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/usb/b2c2/flexcop-usb.c b/drivers/media/usb/b2c2/flexcop-usb.c
> index 7835bb0f32fc..e012b21c4fd7 100644
> --- a/drivers/media/usb/b2c2/flexcop-usb.c
> +++ b/drivers/media/usb/b2c2/flexcop-usb.c
> @@ -511,7 +511,7 @@ static int flexcop_usb_init(struct flexcop_usb *fc_usb)
>  
>  	if (fc_usb->uintf->cur_altsetting->desc.bNumEndpoints < 1)
>  		return -ENODEV;
> -	if (!usb_endpoint_is_isoc_in(&fc_usb->uintf->cur_altsetting->endpoint[1].desc))
> +	if (!usb_endpoint_is_isoc_in(&fc_usb->uintf->cur_altsetting->endpoint[0].desc))
>  		return -ENODEV;
>  
>  	switch (fc_usb->udev->speed) {

Johan
  

Patch

diff --git a/drivers/media/usb/b2c2/flexcop-usb.c b/drivers/media/usb/b2c2/flexcop-usb.c
index 7835bb0f32fc..e012b21c4fd7 100644
--- a/drivers/media/usb/b2c2/flexcop-usb.c
+++ b/drivers/media/usb/b2c2/flexcop-usb.c
@@ -511,7 +511,7 @@  static int flexcop_usb_init(struct flexcop_usb *fc_usb)
 
 	if (fc_usb->uintf->cur_altsetting->desc.bNumEndpoints < 1)
 		return -ENODEV;
-	if (!usb_endpoint_is_isoc_in(&fc_usb->uintf->cur_altsetting->endpoint[1].desc))
+	if (!usb_endpoint_is_isoc_in(&fc_usb->uintf->cur_altsetting->endpoint[0].desc))
 		return -ENODEV;
 
 	switch (fc_usb->udev->speed) {