USB: don't register endpoints for interfaces that are going away
authorAlan Stern <stern@rowland.harvard.edu>
Wed, 29 Oct 2008 19:16:58 +0000 (15:16 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 20 Nov 2008 22:54:53 +0000 (14:54 -0800)
commit5a4c6fe7a2fe3a81921832af856621b8f8231814
tree8f2b36e28e05a5dee234397bd64a3dfb89039f00
parentefa086b9aa83975c48730c5ffe79aa8e1fe3bf3d
USB: don't register endpoints for interfaces that are going away

commit 352d026338378b1f13f044e33c1047da6e470056 upstream.

This patch (as1155) fixes a bug in usbcore.  When interfaces are
deleted, either because the device was disconnected or because of a
configuration change, the extra attribute files and child endpoint
devices may get left behind.  This is because the core removes them
before calling device_del().  But during device_del(), after the
driver is unbound the core will reinstall altsetting 0 and recreate
those extra attributes and children.

The patch prevents this by adding a flag to record when the interface
is in the midst of being unregistered.  When the flag is set, the
attribute files and child devices will not be created.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/message.c
drivers/usb/core/sysfs.c
include/linux/usb.h