diff options
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index 51dbb55604e8..e7998cf31498 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
| @@ -360,6 +360,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, | |||
| 360 | void __user *, arg) | 360 | void __user *, arg) |
| 361 | { | 361 | { |
| 362 | char buffer[256]; | 362 | char buffer[256]; |
| 363 | int ret = 0; | ||
| 363 | 364 | ||
| 364 | /* We only trust the superuser with rebooting the system. */ | 365 | /* We only trust the superuser with rebooting the system. */ |
| 365 | if (!capable(CAP_SYS_BOOT)) | 366 | if (!capable(CAP_SYS_BOOT)) |
| @@ -397,7 +398,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, | |||
| 397 | kernel_halt(); | 398 | kernel_halt(); |
| 398 | unlock_kernel(); | 399 | unlock_kernel(); |
| 399 | do_exit(0); | 400 | do_exit(0); |
| 400 | break; | 401 | panic("cannot halt"); |
| 401 | 402 | ||
| 402 | case LINUX_REBOOT_CMD_POWER_OFF: | 403 | case LINUX_REBOOT_CMD_POWER_OFF: |
| 403 | kernel_power_off(); | 404 | kernel_power_off(); |
| @@ -417,29 +418,22 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, | |||
| 417 | 418 | ||
| 418 | #ifdef CONFIG_KEXEC | 419 | #ifdef CONFIG_KEXEC |
| 419 | case LINUX_REBOOT_CMD_KEXEC: | 420 | case LINUX_REBOOT_CMD_KEXEC: |
| 420 | { | 421 | ret = kernel_kexec(); |
| 421 | int ret; | 422 | break; |
| 422 | ret = kernel_kexec(); | ||
| 423 | unlock_kernel(); | ||
| 424 | return ret; | ||
| 425 | } | ||
| 426 | #endif | 423 | #endif |
| 427 | 424 | ||
| 428 | #ifdef CONFIG_HIBERNATION | 425 | #ifdef CONFIG_HIBERNATION |
| 429 | case LINUX_REBOOT_CMD_SW_SUSPEND: | 426 | case LINUX_REBOOT_CMD_SW_SUSPEND: |
| 430 | { | 427 | ret = hibernate(); |
| 431 | int ret = hibernate(); | 428 | break; |
| 432 | unlock_kernel(); | ||
| 433 | return ret; | ||
| 434 | } | ||
| 435 | #endif | 429 | #endif |
| 436 | 430 | ||
| 437 | default: | 431 | default: |
| 438 | unlock_kernel(); | 432 | ret = -EINVAL; |
| 439 | return -EINVAL; | 433 | break; |
| 440 | } | 434 | } |
| 441 | unlock_kernel(); | 435 | unlock_kernel(); |
| 442 | return 0; | 436 | return ret; |
| 443 | } | 437 | } |
| 444 | 438 | ||
| 445 | static void deferred_cad(struct work_struct *dummy) | 439 | static void deferred_cad(struct work_struct *dummy) |
