Re: [PATCH] Fixing crash when ACM probing interfaces with no endpoint descriptors.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 1 Sep 2010, Toby Gray wrote:

> Certain USB devices, such as the Nokia X6 mobile phone, don't expose any
> endpoint descriptors on some of their interfaces. If the ACM driver is forced
> to probe all interfaces on a device the a NULL pointer dereference will occur
> when the ACM driver attempts to use the endpoint of the alternative settings.
> One way to get the ACM driver to probe all the interfaces is by using the
> /sys/bus/usb/drivers/cdc_acm/new_id interface.
> 
> This patch checks that the alternative settings and the associated endpoint
> pointer are non-NULL before using them.

The correct term is "alternate settings", not "alternative settings".

> Signed-off-by: Toby Gray <toby.gray@xxxxxxxxxxx>
> ---
>  drivers/usb/class/cdc-acm.c |    4 +++-
>  1 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
> index 1833b3a..44bbeae 100644
> --- a/drivers/usb/class/cdc-acm.c
> +++ b/drivers/usb/class/cdc-acm.c
> @@ -965,7 +965,9 @@ static int acm_probe(struct usb_interface *intf,
>  	}
>  
>  	if (!buflen) {
> -		if (intf->cur_altsetting->endpoint->extralen &&
> +		if (intf->cur_altsetting &&

This test isn't needed.  Interfaces always are in one altsetting or 
another.

> +				intf->cur_altsetting->endpoint &&
> +				intf->cur_altsetting->endpoint->extralen &&
>  				intf->cur_altsetting->endpoint->extra) {
>  			dev_dbg(&intf->dev,
>  				"Seeking extra descriptors on endpoint\n");

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux