Additional power management fix for 6.14-rc2
Fix a recently introduced kernel crash due to a NULL pointer dereference during system-wide suspend (Rafael Wysocki). -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEE4fcc61cGeeHD/fCwgsRv/nhiVHEFAmeosk4SHHJqd0Byand5 c29ja2kubmV0AAoJEILEb/54YlRx/r0QAKmsS3cHYuFQUwbBPOb6qUnH9ajUo/kw VXljkuuqTb1nYBDFMZe6yk/nNCIYNhwyB0le93a2Vqc3H6aQV9SP7c/d7QuTMn/j lCOBrzZ5Svy/IF3RgOLDlPA/Hd5n/6qhkhzJ3yZ41aFp3UXIQYisA6HTRtH2Biy5 G2qDI9ksXE8SOOA9xiJa/ZrhuxnZCONQjICKkQ3g1nCGH0AsH7tjRsb08SVy7af/ pfuQYHRleNLTjCCICB8ZD3yCA/9iOJHPcxDTkNhOT2at9bNd5HsU1guMLRffrPs8 jdMh30aaB0VRWmDXpRgBpaa5bkhjevJ6a1c28fY/0d5Z847V3ggohyNfqTBLSosp O6O8GxKR+PfMMUUtNsz7vZQvrNVcZsdTlKThHhN1kw2njfTYfvkpq7uzCP5qB0bV P1yki+HDeK8d/SPqf7ETX9hl05KBdFKYfAj/p7z9OSGLOCKgy1kfvnlLm5SqZR0n lUg5Am2TEZ6oFuwiGz5ZvvegJDLoPqST2ODlWhza4BaGb8yHmSqBomJJZ8E2poKw XNMRdR4EJoIKZNVTEB9WkdInpr6Y3pIuKwQvayIZS+zrvz1IyLvI4inF7wmj+Fxw Uc3IqwmPFr6G0Q5fOx00wWDvkF5NPv7YkOLCs6EAZSDsL5RAAjw2l5/BWn2k7t6+ 8NVWERi1XZ/M =32hC -----END PGP SIGNATURE----- Merge tag 'pm-6.14-rc2-2' of git://git.kernel.org/pub/scm/linux/kernel/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
This commit is contained in:
commit
146339ddb8
1 changed files with 9 additions and 12 deletions
|
@ -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);
|
||||
}
|
||||
|
@ -1287,9 +1281,12 @@ Skip:
|
|||
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:
|
||||
|
|
Loading…
Add table
Reference in a new issue