diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2010-06-04 13:14:43 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-06-04 13:14:43 -0700 |
| commit | 87caedfe6c0eea9d489a90c87e3b3283e3c6362d (patch) | |
| tree | 6fd286bd14c4aa712f52dbf821a48f53e5cae4f7 | |
| parent | 08c499a70f60eb1d0fb6b59460aeea00babe99f6 (diff) | |
| download | patches-87caedfe6c0eea9d489a90c87e3b3283e3c6362d.tar.gz | |
usb patch
| -rw-r--r-- | series | 2 | ||||
| -rw-r--r-- | usb.current/usb-unbind-all-interfaces-before-rebinding-them.patch | 47 |
2 files changed, 48 insertions, 1 deletions
@@ -44,6 +44,7 @@ usb.current/usb-ftdi_sio-fix-dtr-rts-line-modes.patch usb.current/usb-cdc-acm-fix-resource-reclaim-in-error-path-of-acm_probe.patch usb.current/usb-fix-ehci_hcd-build-failure-when-both-generic-of-and-xilinx-is-selected.patch usb.current/usb-serial-digi_acceleport-eliminate-a-null-pointer-dereference.patch +usb.current/usb-unbind-all-interfaces-before-rebinding-them.patch ################################# @@ -98,4 +99,3 @@ staging.current/staging-sep-return-efault-on-copy_to_user-errors.patch # staging stuff is now in the staging-next tree on git.kernel.org - diff --git a/usb.current/usb-unbind-all-interfaces-before-rebinding-them.patch b/usb.current/usb-unbind-all-interfaces-before-rebinding-them.patch new file mode 100644 index 00000000000000..c24eaf374256c1 --- /dev/null +++ b/usb.current/usb-unbind-all-interfaces-before-rebinding-them.patch @@ -0,0 +1,47 @@ +From stern@rowland.harvard.edu Fri Jun 4 13:07:09 2010 +From: Alan Stern <stern@rowland.harvard.edu> +Date: Fri, 4 Jun 2010 14:02:42 -0400 (EDT) +Subject: USB: unbind all interfaces before rebinding them +To: Greg KH <greg@kroah.com> +Cc: François Valenduc <francois.valenduc@tvcablenet.be> +Message-ID: <Pine.LNX.4.44L0.1006041400220.1794-100000@iolanthe.rowland.org> + + +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 | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/usb/core/driver.c ++++ b/drivers/usb/core/driver.c +@@ -1328,6 +1328,7 @@ int usb_resume(struct device *dev, pm_me + + /* For all other calls, take the device back to full power and + * tell the PM core in case it was autosuspended previously. ++ * Unbind the interfaces that will need rebinding later. + */ + } else { + status = usb_resume_both(udev, msg); +@@ -1336,6 +1337,7 @@ int usb_resume(struct device *dev, pm_me + pm_runtime_set_active(dev); + pm_runtime_enable(dev); + udev->last_busy = jiffies; ++ do_unbind_rebind(udev, DO_REBIND); + } + } + |
