diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2011-05-05 07:32:05 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-06 20:52:32 -0400 |
commit | b50fa7c8077c625919b1e0a75fc37b825f024518 (patch) | |
tree | c266234fe50b388b475b03a09a25908b508c2293 /kernel | |
parent | aabb6e1531b0c78423dca6a39620892249fef7f9 (diff) |
reboot: disable usermodehelper to prevent fs access
In case CONFIG_UEVENT_HELPER_PATH is not set to "", which it
should be on every system, the kernel forks processes during
shutdown, which try to access the rootfs, even when the
binary does not exist. It causes exceptions and long delays in
the disk driver, which gets read requests at the time it tries
to shut down the disk.
This patch disables all kernel-forked processes during reboot to
allow a clean poweroff.
Cc: Tejun Heo <htejun@gmail.com>
Tested-By: Anton Guda <atu@dmeti.dp.ua>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sys.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index af468edf096a..70c4c5159420 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -314,6 +314,7 @@ void kernel_restart_prepare(char *cmd) | |||
314 | { | 314 | { |
315 | blocking_notifier_call_chain(&reboot_notifier_list, SYS_RESTART, cmd); | 315 | blocking_notifier_call_chain(&reboot_notifier_list, SYS_RESTART, cmd); |
316 | system_state = SYSTEM_RESTART; | 316 | system_state = SYSTEM_RESTART; |
317 | usermodehelper_disable(); | ||
317 | device_shutdown(); | 318 | device_shutdown(); |
318 | sysdev_shutdown(); | 319 | sysdev_shutdown(); |
319 | syscore_shutdown(); | 320 | syscore_shutdown(); |
@@ -344,6 +345,7 @@ static void kernel_shutdown_prepare(enum system_states state) | |||
344 | blocking_notifier_call_chain(&reboot_notifier_list, | 345 | blocking_notifier_call_chain(&reboot_notifier_list, |
345 | (state == SYSTEM_HALT)?SYS_HALT:SYS_POWER_OFF, NULL); | 346 | (state == SYSTEM_HALT)?SYS_HALT:SYS_POWER_OFF, NULL); |
346 | system_state = state; | 347 | system_state = state; |
348 | usermodehelper_disable(); | ||
347 | device_shutdown(); | 349 | device_shutdown(); |
348 | } | 350 | } |
349 | /** | 351 | /** |