diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index 77de8d65862ccd0275da93749694696860f24b6a..69e5773abfce2459cd65d11a939f9f6250ab7468 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c @@ -1750,6 +1750,7 @@ int usb_suspend(struct device *dev, pm_message_t msg) int usb_resume(struct device *dev, pm_message_t msg) { struct usb_device *udev; + int status; udev = to_usb_device(dev); @@ -1759,7 +1760,14 @@ int usb_resume(struct device *dev, pm_message_t msg) */ if (udev->skip_sys_resume) return 0; - return usb_external_resume_device(udev, msg); + status = usb_external_resume_device(udev, msg); + + /* Avoid PM error messages for devices disconnected while suspended + * as we'll display regular disconnect messages just a bit later. + */ + if (status == -ENODEV) + return 0; + return status; } #endif /* CONFIG_PM */