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, 13 Nov 2008 22:45:00 +0000 (14:45 -0800)
commit352d026338378b1f13f044e33c1047da6e470056
tree92e178cc234bfd19f15e8623b1b92d21918cb3fa
parent0047ca0a45c6a481abd467fb52d2a480ffc8c6b9
USB: don't register endpoints for interfaces that are going away

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>
Cc: stable <stable@kernel.org> [2.6.27, 2.6.26, 2.6.25]
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/message.c
drivers/usb/core/sysfs.c
include/linux/usb.h