diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/power/hibernate.c | 11 | ||||
| -rw-r--r-- | kernel/power/process.c | 7 | ||||
| -rw-r--r-- | kernel/power/suspend.c | 7 | ||||
| -rw-r--r-- | kernel/power/user.c | 10 | 
4 files changed, 8 insertions, 27 deletions
diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index 639ff6e4ae9..e09dfbfeece 100644 --- a/kernel/power/hibernate.c +++ b/kernel/power/hibernate.c @@ -16,7 +16,6 @@  #include <linux/string.h>  #include <linux/device.h>  #include <linux/async.h> -#include <linux/kmod.h>  #include <linux/delay.h>  #include <linux/fs.h>  #include <linux/mount.h> @@ -620,10 +619,6 @@ int hibernate(void)  	sys_sync();  	printk("done.\n"); -	error = usermodehelper_disable(); -	if (error) -		goto Exit; -  	error = freeze_processes();  	if (error)  		goto Free_bitmaps; @@ -660,7 +655,6 @@ int hibernate(void)  	freezer_test_done = false;   Free_bitmaps: -	usermodehelper_enable();  	free_basic_memory_bitmaps();   Exit:  	pm_notifier_call_chain(PM_POST_HIBERNATION); @@ -780,10 +774,6 @@ static int software_resume(void)  	if (error)  		goto close_finish; -	error = usermodehelper_disable(); -	if (error) -		goto close_finish; -  	pr_debug("PM: Preparing processes for restore.\n");  	error = freeze_processes();  	if (error) { @@ -802,7 +792,6 @@ static int software_resume(void)  	swsusp_free();  	thaw_processes();   Done: -	usermodehelper_enable();  	free_basic_memory_bitmaps();   Finish:  	pm_notifier_call_chain(PM_POST_RESTORE); diff --git a/kernel/power/process.c b/kernel/power/process.c index 0d2aeb22610..56eaac7e88a 100644 --- a/kernel/power/process.c +++ b/kernel/power/process.c @@ -16,6 +16,7 @@  #include <linux/freezer.h>  #include <linux/delay.h>  #include <linux/workqueue.h> +#include <linux/kmod.h>  /*    * Timeout for stopping processes @@ -122,6 +123,10 @@ int freeze_processes(void)  {  	int error; +	error = usermodehelper_disable(); +	if (error) +		return error; +  	if (!pm_freezing)  		atomic_inc(&system_freezing_cnt); @@ -187,6 +192,8 @@ void thaw_processes(void)  	} while_each_thread(g, p);  	read_unlock(&tasklist_lock); +	usermodehelper_enable(); +  	schedule();  	printk("done.\n");  } diff --git a/kernel/power/suspend.c b/kernel/power/suspend.c index 88e5c967370..396d262b8fd 100644 --- a/kernel/power/suspend.c +++ b/kernel/power/suspend.c @@ -12,7 +12,6 @@  #include <linux/delay.h>  #include <linux/errno.h>  #include <linux/init.h> -#include <linux/kmod.h>  #include <linux/console.h>  #include <linux/cpu.h>  #include <linux/syscalls.h> @@ -102,17 +101,12 @@ static int suspend_prepare(void)  	if (error)  		goto Finish; -	error = usermodehelper_disable(); -	if (error) -		goto Finish; -  	error = suspend_freeze_processes();  	if (!error)  		return 0;  	suspend_stats.failed_freeze++;  	dpm_save_failed_step(SUSPEND_FREEZE); -	usermodehelper_enable();   Finish:  	pm_notifier_call_chain(PM_POST_SUSPEND);  	pm_restore_console(); @@ -259,7 +253,6 @@ int suspend_devices_and_enter(suspend_state_t state)  static void suspend_finish(void)  {  	suspend_thaw_processes(); -	usermodehelper_enable();  	pm_notifier_call_chain(PM_POST_SUSPEND);  	pm_restore_console();  } diff --git a/kernel/power/user.c b/kernel/power/user.c index 33c4329205a..91b0fd021a9 100644 --- a/kernel/power/user.c +++ b/kernel/power/user.c @@ -12,7 +12,6 @@  #include <linux/suspend.h>  #include <linux/syscalls.h>  #include <linux/reboot.h> -#include <linux/kmod.h>  #include <linux/string.h>  #include <linux/device.h>  #include <linux/miscdevice.h> @@ -222,14 +221,8 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,  		sys_sync();  		printk("done.\n"); -		error = usermodehelper_disable(); -		if (error) -			break; -  		error = freeze_processes(); -		if (error) -			usermodehelper_enable(); -		else +		if (!error)  			data->frozen = 1;  		break; @@ -238,7 +231,6 @@ static long snapshot_ioctl(struct file *filp, unsigned int cmd,  			break;  		pm_restore_gfp_mask();  		thaw_processes(); -		usermodehelper_enable();  		data->frozen = 0;  		break;  |