From: Rafael J. Wysocki Date: Thu, 22 Sep 2022 18:04:40 +0000 (+0200) Subject: PM: runtime: Return -EINPROGRESS from rpm_resume() in the RPM_NOWAIT case X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=e66332a4bc89e3219baaabc7bb549d17a2c42ce9;p=linux.git PM: runtime: Return -EINPROGRESS from rpm_resume() in the RPM_NOWAIT case The prospective callers of rpm_resume() passing RPM_NOWAIT to it may be confused when it returns 0 without actually resuming the device which may happen if the device is suspending at the given time and it will only resume when the suspend in progress has completed. To avoid that confusion, return -EINPROGRESS from rpm_resume() in that case. Since none of the current callers passing RPM_NOWAIT to rpm_resume() check its return value, this change has no functional impact. Signed-off-by: Rafael J. Wysocki Acked-by: Alan Stern Reviewed-by: Douglas Anderson Reviewed-by: Ulf Hansson --- diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c index 997be3ac20a79..b52049098d4ee 100644 --- a/drivers/base/power/runtime.c +++ b/drivers/base/power/runtime.c @@ -792,10 +792,13 @@ static int rpm_resume(struct device *dev, int rpmflags) DEFINE_WAIT(wait); if (rpmflags & (RPM_ASYNC | RPM_NOWAIT)) { - if (dev->power.runtime_status == RPM_SUSPENDING) + if (dev->power.runtime_status == RPM_SUSPENDING) { dev->power.deferred_resume = true; - else + if (rpmflags & RPM_NOWAIT) + retval = -EINPROGRESS; + } else { retval = -EINPROGRESS; + } goto out; }