aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
authorJim Wylder <jwylder1@motorola.com>2011-09-06 21:07:20 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2011-11-11 09:35:13 -0800
commite46389fa0026dd3bbaebf92a525dad3e80b7bce2 (patch)
tree2a70d72bb748d2bc3a1db9478add909e8288c0e3 /drivers/usb/core
parenteece93cccb258072bf9a355faeca2ee2752b27e3 (diff)
downloadkernel_samsung_smdk4412-e46389fa0026dd3bbaebf92a525dad3e80b7bce2.zip
kernel_samsung_smdk4412-e46389fa0026dd3bbaebf92a525dad3e80b7bce2.tar.gz
kernel_samsung_smdk4412-e46389fa0026dd3bbaebf92a525dad3e80b7bce2.tar.bz2
USB: for usb_autopm_get_interface_async -EINPROGRESS is not an error
commit c5a48592d874ddef8c7880311581eccf0eb30c3b upstream. A return value of -EINPROGRESS from pm_runtime_get indicates that the device is already resuming due to a previous call. Internally, usb_autopm_get_interface_async doesn't treat this as an error and increments the usage count, but passes the error status along to the caller. The logical assumption of the caller is that any negative return value reflects the device not resuming and the pm_usage_cnt not being incremented. Since the usage count is being incremented and the device is resuming, return success (0) instead. Signed-off-by: James Wylder <james.wylder@motorola.com> Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core')
-rw-r--r--drivers/usb/core/driver.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 34e3da5..14b83f2 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -1583,7 +1583,7 @@ int usb_autopm_get_interface_async(struct usb_interface *intf)
dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
__func__, atomic_read(&intf->dev.power.usage_count),
status);
- if (status > 0)
+ if (status > 0 || status == -EINPROGRESS)
status = 0;
return status;
}