Skip to content

Commit

Permalink
Merge tag 'pm-6.14-rc2-2' of git://git.kernel.org/pub/scm/linux/kerne…
Browse files Browse the repository at this point in the history
…l/git/rafael/linux-pm

Pull power management fix from Rafael Wysocki:
 "Fix a recently introduced kernel crash due to a NULL pointer
  dereference during system-wide suspend (Rafael Wysocki)"

* tag 'pm-6.14-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
  PM: sleep: core: Restrict power.set_active propagation
  • Loading branch information
Linus Torvalds committed Feb 9, 2025
2 parents 954a209 + 7585946 commit 146339d
Showing 1 changed file with 9 additions and 12 deletions.
21 changes: 9 additions & 12 deletions drivers/base/power/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1191,24 +1191,18 @@ static pm_message_t resume_event(pm_message_t sleep_state)
return PMSG_ON;
}

static void dpm_superior_set_must_resume(struct device *dev, bool set_active)
static void dpm_superior_set_must_resume(struct device *dev)
{
struct device_link *link;
int idx;

if (dev->parent) {
if (dev->parent)
dev->parent->power.must_resume = true;
if (set_active)
dev->parent->power.set_active = true;
}

idx = device_links_read_lock();

list_for_each_entry_rcu_locked(link, &dev->links.suppliers, c_node) {
list_for_each_entry_rcu_locked(link, &dev->links.suppliers, c_node)
link->supplier->power.must_resume = true;
if (set_active)
link->supplier->power.set_active = true;
}

device_links_read_unlock(idx);
}
Expand Down Expand Up @@ -1287,9 +1281,12 @@ static int device_suspend_noirq(struct device *dev, pm_message_t state, bool asy
dev->power.must_resume = true;

if (dev->power.must_resume) {
dev->power.set_active = dev->power.set_active ||
dev_pm_test_driver_flags(dev, DPM_FLAG_SMART_SUSPEND);
dpm_superior_set_must_resume(dev, dev->power.set_active);
if (dev_pm_test_driver_flags(dev, DPM_FLAG_SMART_SUSPEND)) {
dev->power.set_active = true;
if (dev->parent && !dev->parent->power.ignore_children)
dev->parent->power.set_active = true;
}
dpm_superior_set_must_resume(dev);
}

Complete:
Expand Down

0 comments on commit 146339d

Please sign in to comment.