USB: unbind all interfaces before rebinding them
authorAlan Stern <stern@rowland.harvard.edu>
Fri, 4 Jun 2010 18:02:42 +0000 (14:02 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 4 Jun 2010 20:16:20 +0000 (13:16 -0700)
commitc043f1245654a726925529007210e9f786426448
tree67c3707d03183b51a111e90a6652ff472ce653aa
parent109f34e71b9049a57f6cdf3f1da6bee2b722b259
USB: unbind all interfaces before rebinding them

This patch (as1387) fixes a bug introduced during the changeover to
the runtime PM framework.  When a driver doesn't support resume or
reset-resume, and consequently its interfaces need to be unbound and
rebound, we have to unbind all the interfaces before trying to rebind
any of them.  Otherwise the driver's probe method for one interface
could try to claim a different interface and fail, because that other
interface hasn't been unbound yet.

This fixes Bugzilla #15788.  The symptom is that some USB sound cards
don't work after hibernation.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Tested-by: François Valenduc <francois.valenduc@tvcablenet.be>
Cc: stable <stable@kernel.org> [.34]
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/driver.c