From: Rafael J. Wysocki <rafael.j.wyso...@intel.com>

If HCD_DEAD(hcd) is "true" in check_root_hub_suspended(), it is
rather pointless to check the secondary root hub, so return early
then.

This actually fixes occasional suspend failures on one of my test
machines.

Signed-off-by: Rafael J. Wysocki <rafael.j.wyso...@intel.com>
---
 drivers/usb/core/hcd-pci.c |    3 +++
 1 file changed, 3 insertions(+)

Index: linux-pm/drivers/usb/core/hcd-pci.c
===================================================================
--- linux-pm.orig/drivers/usb/core/hcd-pci.c
+++ linux-pm/drivers/usb/core/hcd-pci.c
@@ -427,6 +427,9 @@ static int check_root_hub_suspended(stru
                dev_warn(dev, "Root hub is not suspended\n");
                return -EBUSY;
        }
+       if (HCD_DEAD(hcd))
+               return 0;
+
        if (hcd->shared_hcd) {
                hcd = hcd->shared_hcd;
                if (HCD_RH_RUNNING(hcd)) {

Reply via email to