The patch titled cdc-acm: fix sysfs attribute registration bug has been added to the -mm tree. Its filename is cdc-acm-fix-sysfs-attribute-registration-bug.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: cdc-acm: fix sysfs attribute registration bug 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> Cc: Greg KH <greg@xxxxxxxxx> Cc: <stable@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/usb/class/cdc-acm.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff -puN drivers/usb/class/cdc-acm.c~cdc-acm-fix-sysfs-attribute-registration-bug drivers/usb/class/cdc-acm.c --- a/drivers/usb/class/cdc-acm.c~cdc-acm-fix-sysfs-attribute-registration-bug +++ a/drivers/usb/class/cdc-acm.c @@ -921,6 +921,10 @@ skip_normal_probe: return -EINVAL; } } + + /* Accept probe requests only for the control interface */ + if (intf != control_interface) + return -ENODEV; if (usb_interface_claimed(data_interface)) { /* valid in this context */ dev_dbg(&intf->dev,"The data interface isn't available"); @@ -1109,10 +1113,12 @@ static void acm_disconnect(struct usb_in 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); _ Patches currently in -mm which might be from stern@xxxxxxxxxxxxxxxxxxx are origin.patch nikon-d50-is-an-unusual-device.patch cdc-acm-fix-sysfs-attribute-registration-bug.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html