mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 04:04:43 +01:00
xen/manage: Fix suspend error path
The device power management API has the following asymmetry: * dpm_suspend_start() does not clean up on failure (it requires a call to dpm_resume_end()) * dpm_suspend_end() does clean up on failure (it does not require a call to dpm_resume_start()) The asymmetry was introduced by commitd8f3de0d24("Suspend-related patches for 2.6.27") in June 2008: It removed a call to device_resume() from device_suspend() (which was later renamed to dpm_suspend_start()). When Xen began using the device power management API in May 2008 with commit0e91398f2a("xen: implement save/restore"), the asymmetry did not yet exist. But since it was introduced, a call to dpm_resume_end() is missing in the error path of dpm_suspend_start(). Fix it. Fixes:d8f3de0d24("Suspend-related patches for 2.6.27") Signed-off-by: Lukas Wunner <lukas@wunner.de> Cc: stable@vger.kernel.org # v2.6.27 Reviewed-by: "Rafael J. Wysocki (Intel)" <rafael@kernel.org> Signed-off-by: Juergen Gross <jgross@suse.com> Message-ID: <22453676d1ddcebbe81641bb68ddf587fee7e21e.1756990799.git.lukas@wunner.de>
This commit is contained in:
parent
3fcc8e1469
commit
f770c3d858
1 changed files with 2 additions and 1 deletions
|
|
@ -110,7 +110,7 @@ static void do_suspend(void)
|
|||
err = dpm_suspend_start(PMSG_FREEZE);
|
||||
if (err) {
|
||||
pr_err("%s: dpm_suspend_start %d\n", __func__, err);
|
||||
goto out_thaw;
|
||||
goto out_resume_end;
|
||||
}
|
||||
|
||||
printk(KERN_DEBUG "suspending xenstore...\n");
|
||||
|
|
@ -150,6 +150,7 @@ out_resume:
|
|||
else
|
||||
xs_suspend_cancel();
|
||||
|
||||
out_resume_end:
|
||||
dpm_resume_end(si.cancelled ? PMSG_THAW : PMSG_RESTORE);
|
||||
|
||||
out_thaw:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue