提交 c5a48592 编写于 作者: J Jim Wylder 提交者: Greg Kroah-Hartman

USB: for usb_autopm_get_interface_async -EINPROGRESS is not an error

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: NJames Wylder <james.wylder@motorola.com>
Acked-by: NAlan Stern <stern@rowland.harvard.edu>
Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
上级 e16da02f
...@@ -1583,7 +1583,7 @@ int usb_autopm_get_interface_async(struct usb_interface *intf) ...@@ -1583,7 +1583,7 @@ int usb_autopm_get_interface_async(struct usb_interface *intf)
dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n", dev_vdbg(&intf->dev, "%s: cnt %d -> %d\n",
__func__, atomic_read(&intf->dev.power.usage_count), __func__, atomic_read(&intf->dev.power.usage_count),
status); status);
if (status > 0) if (status > 0 || status == -EINPROGRESS)
status = 0; status = 0;
return status; return status;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册