forked from luck/tmp_suning_uos_patched
PM: sleep: core: Drop racy and redundant checks from device_prepare()
Alan Stern points out that the WARN_ON() check in device_prepare() is racy (because the PM-runtime API can be disabled briefly for any device at any time and system suspend can start at any time too) and the pm_runtime_suspended() check in the computation of the direct_complete flag value is redundant (because it will be repeated later anyway). Drop both these checks accordingly. Reported-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
3704a6a445
commit
b5252a6cbb
|
@ -1922,10 +1922,6 @@ static int device_prepare(struct device *dev, pm_message_t state)
|
||||||
if (dev->power.syscore)
|
if (dev->power.syscore)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
WARN_ON(!pm_runtime_enabled(dev) &&
|
|
||||||
dev_pm_test_driver_flags(dev, DPM_FLAG_SMART_SUSPEND |
|
|
||||||
DPM_FLAG_LEAVE_SUSPENDED));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If a device's parent goes into runtime suspend at the wrong time,
|
* If a device's parent goes into runtime suspend at the wrong time,
|
||||||
* it won't be possible to resume the device. To prevent this we
|
* it won't be possible to resume the device. To prevent this we
|
||||||
|
@ -1973,8 +1969,7 @@ static int device_prepare(struct device *dev, pm_message_t state)
|
||||||
*/
|
*/
|
||||||
spin_lock_irq(&dev->power.lock);
|
spin_lock_irq(&dev->power.lock);
|
||||||
dev->power.direct_complete = state.event == PM_EVENT_SUSPEND &&
|
dev->power.direct_complete = state.event == PM_EVENT_SUSPEND &&
|
||||||
((pm_runtime_suspended(dev) && ret > 0) ||
|
(ret > 0 || dev->power.no_pm_callbacks) &&
|
||||||
dev->power.no_pm_callbacks) &&
|
|
||||||
!dev_pm_test_driver_flags(dev, DPM_FLAG_NEVER_SKIP);
|
!dev_pm_test_driver_flags(dev, DPM_FLAG_NEVER_SKIP);
|
||||||
spin_unlock_irq(&dev->power.lock);
|
spin_unlock_irq(&dev->power.lock);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user