On Tue, 6 Sep 2011, Jim Wylder wrote: > 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@xxxxxxxxxxxx> > --- > drivers/usb/core/driver.c | 2 +- > 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; > } Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html