|
@@ -433,11 +433,12 @@ static DEFINE_MUTEX(reboot_mutex);
|
|
|
SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
|
|
|
void __user *, arg)
|
|
|
{
|
|
|
+ struct pid_namespace *pid_ns = task_active_pid_ns(current);
|
|
|
char buffer[256];
|
|
|
int ret = 0;
|
|
|
|
|
|
/* We only trust the superuser with rebooting the system. */
|
|
|
- if (!capable(CAP_SYS_BOOT))
|
|
|
+ if (!ns_capable(pid_ns->user_ns, CAP_SYS_BOOT))
|
|
|
return -EPERM;
|
|
|
|
|
|
/* For safety, we require "magic" arguments. */
|
|
@@ -453,7 +454,7 @@ SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd,
|
|
|
* pid_namespace, the command is handled by reboot_pid_ns() which will
|
|
|
* call do_exit().
|
|
|
*/
|
|
|
- ret = reboot_pid_ns(task_active_pid_ns(current), cmd);
|
|
|
+ ret = reboot_pid_ns(pid_ns, cmd);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|