diff options
Diffstat (limited to 'kernel/power/hibernate.c')
| -rw-r--r-- | kernel/power/hibernate.c | 23 | 
1 files changed, 10 insertions, 13 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 0a186cfde78..639ff6e4ae9 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -611,19 +611,19 @@ int hibernate(void)  	if (error)  		goto Exit; -	error = usermodehelper_disable(); -	if (error) -		goto Exit; -  	/* Allocate memory management structures */  	error = create_basic_memory_bitmaps();  	if (error) -		goto Enable_umh; +		goto Exit;  	printk(KERN_INFO "PM: Syncing filesystems ... ");  	sys_sync();  	printk("done.\n"); +	error = usermodehelper_disable(); +	if (error) +		goto Exit; +  	error = freeze_processes();  	if (error)  		goto Free_bitmaps; @@ -660,9 +660,8 @@ int hibernate(void)  	freezer_test_done = false;   Free_bitmaps: -	free_basic_memory_bitmaps(); - Enable_umh:  	usermodehelper_enable(); +	free_basic_memory_bitmaps();   Exit:  	pm_notifier_call_chain(PM_POST_HIBERNATION);  	pm_restore_console(); @@ -777,15 +776,13 @@ static int software_resume(void)  	if (error)  		goto close_finish; -	error = usermodehelper_disable(); +	error = create_basic_memory_bitmaps();  	if (error)  		goto close_finish; -	error = create_basic_memory_bitmaps(); -	if (error) { -		usermodehelper_enable(); +	error = usermodehelper_disable(); +	if (error)  		goto close_finish; -	}  	pr_debug("PM: Preparing processes for restore.\n");  	error = freeze_processes(); @@ -805,8 +802,8 @@ static int software_resume(void)  	swsusp_free();  	thaw_processes();   Done: -	free_basic_memory_bitmaps();  	usermodehelper_enable(); +	free_basic_memory_bitmaps();   Finish:  	pm_notifier_call_chain(PM_POST_RESTORE);  	pm_restore_console();  |