Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1761336AbXHXOAE (ORCPT ); Fri, 24 Aug 2007 10:00:04 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1760680AbXHXN7v (ORCPT ); Fri, 24 Aug 2007 09:59:51 -0400 Received: from iolanthe.rowland.org ([192.131.102.54]:48105 "HELO iolanthe.rowland.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1756837AbXHXN7u (ORCPT ); Fri, 24 Aug 2007 09:59:50 -0400 Date: Fri, 24 Aug 2007 09:59:49 -0400 (EDT) From: Alan Stern X-X-Sender: stern@iolanthe.rowland.org To: Greg KH cc: Kernel development list , , USB development list , Justin Forbes , Zwane Mwaikambo , "Theodore Ts'o" , Randy Dunlap , Dave Jones , Chuck Wolber , Chris Wedgwood , Michael Krufky , Chuck Ebbert , Domenico Andreoli , , Andrew Morton , , Oliver Neukum Subject: Re: [patch 25/28] USB: cdc-acm: fix sysfs attribute registration bug In-Reply-To: <20070823222750.GY18559@kroah.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2217 Lines: 65 On Thu, 23 Aug 2007, Greg KH wrote: > -stable review patch. If anyone has any objections, please let us know. > > ------------------ > > From: Alan Stern > > 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 > Acked-by: Oliver Neukum > Signed-off-by: Greg Kroah-Hartman > > --- > 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); acm->dev = NULL; usb_set_intfdata(acm->control, NULL); usb_set_intfdata(acm->data, NULL); Alan Stern - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/