Re: [stable] [patch 25/28] USB: cdc-acm: fix sysfs attributeregistration bug

From: Greg KH
Date: Fri Aug 24 2007 - 11:52:29 EST


On Fri, Aug 24, 2007 at 09:59:49AM -0400, Alan Stern wrote:
> On Thu, 23 Aug 2007, Greg KH wrote:
>
> > -stable review patch. If anyone has any objections, please let us know.
> >
> > ------------------
> >
> > From: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> >
> > This patch (as950) fixes a bug in the cdc-acm driver. It doesn't keep
> > track of which interface (control or data) the sysfs attributes get
> > registered for, and as a result, during disconnect it will sometimes
> > attempt to remove the attributes from the wrong interface. The
> > left-over attributes can cause a crash later on, particularly if the driver
> > module has been unloaded.
> >
> > Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>
> > Acked-by: Oliver Neukum <oneukum@xxxxxxx>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>
> >
> > ---
> > drivers/usb/class/cdc-acm.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > --- a/drivers/usb/class/cdc-acm.c
> > +++ b/drivers/usb/class/cdc-acm.c
> > @@ -900,6 +900,10 @@ next_desc:
> > return -ENODEV;
> > }
> > }
> > +
> > + /* Accept probe requests only for the control interface */
> > + if (intf != control_interface)
> > + return -ENODEV;
> >
> > if (data_interface_num != call_interface_num)
> > dev_dbg(&intf->dev,"Seperate call control interface. That is not fully supported.");
> >
>
> Odd. This doesn't include the entire patch; the second hunk is
> missing. It should go on to say:
>
> @@ -1109,10 +1113,12 @@ static void acm_disconnect(struct usb_interface *intf)
> return;
> }
> if (acm->country_codes){
> - device_remove_file(&intf->dev, &dev_attr_wCountryCodes);
> - device_remove_file(&intf->dev, &dev_attr_iCountryCodeRelDate);
> + device_remove_file(&acm->control->dev,
> + &dev_attr_wCountryCodes);
> + device_remove_file(&acm->control->dev,
> + &dev_attr_iCountryCodeRelDate);
> }
> - device_remove_file(&intf->dev, &dev_attr_bmCapabilities);
> + device_remove_file(&acm->control->dev, &dev_attr_bmCapabilities);


I thought so too, untill you look at the 2.6.22.5 release, which already
has that change in it for some reason.

So that part of the patch drops out, it turns out you just reverted
things back to the way things used to be here :)

thanks,

greg k-h
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/