| Date | Wed, 14 Oct 2009 15:44:46 GMT | From | tip-bot for Thomas Gleixner <> | Subject | [tip:bkl/core] sys: Remove BKL from sys_reboot |
| |
Commit-ID: 6f15fa50087c8317e353145319466afbeb27a75d Gitweb: http://git.kernel.org/tip/6f15fa50087c8317e353145319466afbeb27a75d Author: Thomas Gleixner <tglx@linutronix.de> AuthorDate: Fri, 9 Oct 2009 20:31:33 +0200 Committer: Thomas Gleixner <tglx@linutronix.de> CommitDate: Wed, 14 Oct 2009 15:31:10 +0200
sys: Remove BKL from sys_reboot
Serialization of sys_reboot can be done local. The BKL is not protecting anything else.
LKML-Reference: <20091010153349.405590702@linutronix.de> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- kernel/sys.c | 14 +++++++------- 1 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/kernel/sys.c b/kernel/sys.c index 255475d..22ea955 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -8,7 +8,6 @@ #include <linux/mm.h> #include <linux/utsname.h> #include <linux/mman.h> -#include <linux/smp_lock.h> #include <linux/notifier.h> #include <linux/reboot.h> #include <linux/prctl.h> @@ -349,6 +348,9 @@ void kernel_power_off(void) machine_power_off(); } EXPORT_SYMBOL_GPL(kernel_power_off); + +static DEFINE_MUTEX(reboot_mutex); + /* * Reboot system call: for obvious reasons only root may call it, * and even root needs to set up some magic numbers in the registers @@ -381,7 +383,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off) cmd = LINUX_REBOOT_CMD_HALT; - lock_kernel(); + mutex_lock(&reboot_mutex); switch (cmd) { case LINUX_REBOOT_CMD_RESTART: kernel_restart(NULL); @@ -397,20 +399,18 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, case LINUX_REBOOT_CMD_HALT: kernel_halt(); - unlock_kernel(); do_exit(0); panic("cannot halt"); case LINUX_REBOOT_CMD_POWER_OFF: kernel_power_off(); - unlock_kernel(); do_exit(0); break; case LINUX_REBOOT_CMD_RESTART2: if (strncpy_from_user(&buffer[0], arg, sizeof(buffer) - 1) < 0) { - unlock_kernel(); - return -EFAULT; + ret = -EFAULT; + break; } buffer[sizeof(buffer) - 1] = '\0'; @@ -433,7 +433,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, ret = -EINVAL; break; } - unlock_kernel(); + mutex_unlock(&reboot_mutex); return ret; }
|