aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-11-29 17:43:22 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-11-29 17:43:22 -0500
commit8cd7920370a3715ccbd1c98bf33f172b8837dc0b (patch)
tree6ee969f2a1e235ed37348f841c3f15a03cfdff1e /kernel
parent57db53b07429c0d648f48727dd6c7c2b64c5708d (diff)
parentf7bc83d87d242917ca0ee041ed509f57f361dd56 (diff)
Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: PM: Update comments describing device power management callbacks PM / Sleep: Update documentation related to system wakeup PM / Runtime: Make documentation follow the new behavior of irq_safe PM / Sleep: Correct inaccurate information in devices.txt PM / Domains: Document how PM domains are used by the PM core PM / Hibernate: Do not leak memory in error/test code paths
Diffstat (limited to 'kernel')
-rw-r--r--kernel/power/hibernate.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c
index 196c01268eb..a6b0503574e 100644
--- a/kernel/power/hibernate.c
+++ b/kernel/power/hibernate.c
@@ -347,7 +347,7 @@ int hibernation_snapshot(int platform_mode)
347 347
348 error = freeze_kernel_threads(); 348 error = freeze_kernel_threads();
349 if (error) 349 if (error)
350 goto Close; 350 goto Cleanup;
351 351
352 if (hibernation_test(TEST_FREEZER) || 352 if (hibernation_test(TEST_FREEZER) ||
353 hibernation_testmode(HIBERNATION_TESTPROC)) { 353 hibernation_testmode(HIBERNATION_TESTPROC)) {
@@ -357,12 +357,14 @@ int hibernation_snapshot(int platform_mode)
357 * successful freezer test. 357 * successful freezer test.
358 */ 358 */
359 freezer_test_done = true; 359 freezer_test_done = true;
360 goto Close; 360 goto Cleanup;
361 } 361 }
362 362
363 error = dpm_prepare(PMSG_FREEZE); 363 error = dpm_prepare(PMSG_FREEZE);
364 if (error) 364 if (error) {
365 goto Complete_devices; 365 dpm_complete(msg);
366 goto Cleanup;
367 }
366 368
367 suspend_console(); 369 suspend_console();
368 pm_restrict_gfp_mask(); 370 pm_restrict_gfp_mask();
@@ -391,8 +393,6 @@ int hibernation_snapshot(int platform_mode)
391 pm_restore_gfp_mask(); 393 pm_restore_gfp_mask();
392 394
393 resume_console(); 395 resume_console();
394
395 Complete_devices:
396 dpm_complete(msg); 396 dpm_complete(msg);
397 397
398 Close: 398 Close:
@@ -402,6 +402,10 @@ int hibernation_snapshot(int platform_mode)
402 Recover_platform: 402 Recover_platform:
403 platform_recover(platform_mode); 403 platform_recover(platform_mode);
404 goto Resume_devices; 404 goto Resume_devices;
405
406 Cleanup:
407 swsusp_free();
408 goto Close;
405} 409}
406 410
407/** 411/**