diff options
| author | Felix Blyakher <felixb@sgi.com> | 2009-06-10 18:07:47 -0400 |
|---|---|---|
| committer | Felix Blyakher <felixb@sgi.com> | 2009-06-10 18:07:47 -0400 |
| commit | 4e73e0eb633f8a1b5cbf20e7f42c6dbfec1d1ca7 (patch) | |
| tree | 0cea46e43f0625244c3d06a71d6559e5ec5419ca /kernel/sys.c | |
| parent | 4156e735d3abde8e9243b5d22f7999dd3fffab2e (diff) | |
| parent | 07a2039b8eb0af4ff464efd3dfd95de5c02648c6 (diff) | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 29 |
1 files changed, 11 insertions, 18 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 37f458e6882a..e7998cf31498 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | #include <linux/seccomp.h> | 34 | #include <linux/seccomp.h> |
| 35 | #include <linux/cpu.h> | 35 | #include <linux/cpu.h> |
| 36 | #include <linux/ptrace.h> | 36 | #include <linux/ptrace.h> |
| 37 | #include <linux/fs_struct.h> | ||
| 37 | 38 | ||
| 38 | #include <linux/compat.h> | 39 | #include <linux/compat.h> |
| 39 | #include <linux/syscalls.h> | 40 | #include <linux/syscalls.h> |
| @@ -359,6 +360,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, | |||
| 359 | void __user *, arg) | 360 | void __user *, arg) |
| 360 | { | 361 | { |
| 361 | char buffer[256]; | 362 | char buffer[256]; |
| 363 | int ret = 0; | ||
| 362 | 364 | ||
| 363 | /* We only trust the superuser with rebooting the system. */ | 365 | /* We only trust the superuser with rebooting the system. */ |
| 364 | if (!capable(CAP_SYS_BOOT)) | 366 | if (!capable(CAP_SYS_BOOT)) |
| @@ -396,7 +398,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, | |||
| 396 | kernel_halt(); | 398 | kernel_halt(); |
| 397 | unlock_kernel(); | 399 | unlock_kernel(); |
| 398 | do_exit(0); | 400 | do_exit(0); |
| 399 | break; | 401 | panic("cannot halt"); |
| 400 | 402 | ||
| 401 | case LINUX_REBOOT_CMD_POWER_OFF: | 403 | case LINUX_REBOOT_CMD_POWER_OFF: |
| 402 | kernel_power_off(); | 404 | kernel_power_off(); |
| @@ -416,29 +418,22 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, | |||
| 416 | 418 | ||
| 417 | #ifdef CONFIG_KEXEC | 419 | #ifdef CONFIG_KEXEC |
| 418 | case LINUX_REBOOT_CMD_KEXEC: | 420 | case LINUX_REBOOT_CMD_KEXEC: |
| 419 | { | 421 | ret = kernel_kexec(); |
| 420 | int ret; | 422 | break; |
| 421 | ret = kernel_kexec(); | ||
| 422 | unlock_kernel(); | ||
| 423 | return ret; | ||
| 424 | } | ||
| 425 | #endif | 423 | #endif |
| 426 | 424 | ||
| 427 | #ifdef CONFIG_HIBERNATION | 425 | #ifdef CONFIG_HIBERNATION |
| 428 | case LINUX_REBOOT_CMD_SW_SUSPEND: | 426 | case LINUX_REBOOT_CMD_SW_SUSPEND: |
| 429 | { | 427 | ret = hibernate(); |
| 430 | int ret = hibernate(); | 428 | break; |
| 431 | unlock_kernel(); | ||
| 432 | return ret; | ||
| 433 | } | ||
| 434 | #endif | 429 | #endif |
| 435 | 430 | ||
| 436 | default: | 431 | default: |
| 437 | unlock_kernel(); | 432 | ret = -EINVAL; |
| 438 | return -EINVAL; | 433 | break; |
| 439 | } | 434 | } |
| 440 | unlock_kernel(); | 435 | unlock_kernel(); |
| 441 | return 0; | 436 | return ret; |
| 442 | } | 437 | } |
| 443 | 438 | ||
| 444 | static void deferred_cad(struct work_struct *dummy) | 439 | static void deferred_cad(struct work_struct *dummy) |
| @@ -1013,10 +1008,8 @@ SYSCALL_DEFINE2(setpgid, pid_t, pid, pid_t, pgid) | |||
| 1013 | if (err) | 1008 | if (err) |
| 1014 | goto out; | 1009 | goto out; |
| 1015 | 1010 | ||
| 1016 | if (task_pgrp(p) != pgrp) { | 1011 | if (task_pgrp(p) != pgrp) |
| 1017 | change_pid(p, PIDTYPE_PGID, pgrp); | 1012 | change_pid(p, PIDTYPE_PGID, pgrp); |
| 1018 | set_task_pgrp(p, pid_nr(pgrp)); | ||
| 1019 | } | ||
| 1020 | 1013 | ||
| 1021 | err = 0; | 1014 | err = 0; |
| 1022 | out: | 1015 | out: |
