diff options
Diffstat (limited to 'kernel/sys.c')
-rw-r--r-- | kernel/sys.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/sys.c b/kernel/sys.c index f484077b6b14..6df42624e454 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -1990,7 +1990,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, | |||
1990 | error = prctl_get_seccomp(); | 1990 | error = prctl_get_seccomp(); |
1991 | break; | 1991 | break; |
1992 | case PR_SET_SECCOMP: | 1992 | case PR_SET_SECCOMP: |
1993 | error = prctl_set_seccomp(arg2); | 1993 | error = prctl_set_seccomp(arg2, (char __user *)arg3); |
1994 | break; | 1994 | break; |
1995 | case PR_GET_TSC: | 1995 | case PR_GET_TSC: |
1996 | error = GET_TSC_CTL(arg2); | 1996 | error = GET_TSC_CTL(arg2); |
@@ -2061,6 +2061,16 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3, | |||
2061 | error = put_user(me->signal->is_child_subreaper, | 2061 | error = put_user(me->signal->is_child_subreaper, |
2062 | (int __user *) arg2); | 2062 | (int __user *) arg2); |
2063 | break; | 2063 | break; |
2064 | case PR_SET_NO_NEW_PRIVS: | ||
2065 | if (arg2 != 1 || arg3 || arg4 || arg5) | ||
2066 | return -EINVAL; | ||
2067 | |||
2068 | current->no_new_privs = 1; | ||
2069 | break; | ||
2070 | case PR_GET_NO_NEW_PRIVS: | ||
2071 | if (arg2 || arg3 || arg4 || arg5) | ||
2072 | return -EINVAL; | ||
2073 | return current->no_new_privs ? 1 : 0; | ||
2064 | default: | 2074 | default: |
2065 | error = -EINVAL; | 2075 | error = -EINVAL; |
2066 | break; | 2076 | break; |