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