diff options
Diffstat (limited to 'drivers/usb/core/driver.c')
| -rw-r--r-- | drivers/usb/core/driver.c | 9 | 
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index f8e2d6d52e5..9a56635dc19 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c @@ -1189,8 +1189,13 @@ static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)  	if (status == 0) {  		status = usb_suspend_device(udev, msg); -		/* Again, ignore errors during system sleep transitions */ -		if (!PMSG_IS_AUTO(msg)) +		/* +		 * Ignore errors from non-root-hub devices during +		 * system sleep transitions.  For the most part, +		 * these devices should go to low power anyway when +		 * the entire bus is suspended. +		 */ +		if (udev->parent && !PMSG_IS_AUTO(msg))  			status = 0;  	}  |