Skip to content

Commit

Permalink
PM / Hibernate: Refactor and simplify hibernation_snapshot() code
Browse files Browse the repository at this point in the history
The goto statements in hibernation_snapshot() are a bit complex.
Refactor the code to remove some of them, thereby simplifying the
implementation.

Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
  • Loading branch information
Srivatsa S. Bhat authored and Rafael J. Wysocki committed Nov 23, 2011
1 parent 64e94aa commit 953a206
Showing 1 changed file with 9 additions and 13 deletions.
22 changes: 9 additions & 13 deletions kernel/power/hibernate.c
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ static int create_image(int platform_mode)
*/
int hibernation_snapshot(int platform_mode)
{
pm_message_t msg = PMSG_RECOVER;
pm_message_t msg;
int error;

error = platform_begin(platform_mode);
Expand Down Expand Up @@ -362,26 +362,26 @@ int hibernation_snapshot(int platform_mode)

error = dpm_prepare(PMSG_FREEZE);
if (error) {
dpm_complete(msg);
dpm_complete(PMSG_RECOVER);
goto Cleanup;
}

suspend_console();
pm_restrict_gfp_mask();

error = dpm_suspend(PMSG_FREEZE);
if (error)
goto Recover_platform;

if (hibernation_test(TEST_DEVICES))
goto Recover_platform;
if (error || hibernation_test(TEST_DEVICES))
platform_recover(platform_mode);
else
error = create_image(platform_mode);

error = create_image(platform_mode);
/*
* Control returns here (1) after the image has been created or the
* In the case that we call create_image() above, the control
* returns here (1) after the image has been created or the
* image creation has failed and (2) after a successful restore.
*/

Resume_devices:
/* We may need to release the preallocated image pages here. */
if (error || !in_suspend)
swsusp_free();
Expand All @@ -399,10 +399,6 @@ int hibernation_snapshot(int platform_mode)
platform_end(platform_mode);
return error;

Recover_platform:
platform_recover(platform_mode);
goto Resume_devices;

Cleanup:
swsusp_free();
goto Close;
Expand Down

0 comments on commit 953a206

Please sign in to comment.