Patch "PM: core: Fix device_pm_check_callbacks()" has been added to the 4.9-stable tree
Subsystems (5)
This is a note to let you know that I've just added the patch titled
PM: core: Fix device_pm_check_callbacks()
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
pm-core-fix-device_pm_check_callbacks.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
157c460e10cb6eca29ccbd0f023db159d0c55ec7Mon Sep 17 00:00:00 2001
From: "Rafael J. Wysocki" <[email protected]>
Date: Tue, 19 Sep 2017 02:22:39 +0200
Subject: PM: core: Fix device_pm_check_callbacks()
From: Rafael J. Wysocki <[email protected]>
commit 157c460e10cb6eca29ccbd0f023db159d0c55ec7 upstream.
The device_pm_check_callbacks() function doesn't check legacy ->suspend and ->resume callback pointers under the device's bus type, class and driver, so in some cases it may set the no_pm_callbacks flag for the device incorrectly and then the callbacks may be skipped during system suspend/resume, which shouldn't happen.
--- drivers/base/power/main.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/base/power/main.c +6 -3
@@ -1757,10 +1757,13 @@ void device_pm_check_callbacks(struct de {spin_lock_irq (&dev->power.lock); dev->power.no_pm_callbacks = - (!dev->bus ||pm_ops_is_empty (dev->bus->pm)) && - (!dev->class ||pm_ops_is_empty (dev->class->pm)) && + (!dev->bus || (pm_ops_is_empty (dev->bus->pm) && + !dev->bus->suspend && !dev->bus->resume)) && + (!dev->class || (pm_ops_is_empty (dev->class->pm) && + !dev->class->suspend && !dev->class->resume)) && (!dev->type ||pm_ops_is_empty (dev->type->pm)) && (!dev->pm_domain ||pm_ops_is_empty (&dev->pm_domain->ops)) && - (!dev->driver ||pm_ops_is_empty (dev->driver->pm)); + (!dev->driver || (pm_ops_is_empty (dev->driver->pm) && + !dev->driver->suspend && !dev->driver->resume));spin_unlock_irq (&dev->power.lock); }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/pm-core-fix-device_pm_check_callbacks.patch