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 e7006eb6c1e..ba0ae8eea6f 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1908,7 +1908,7 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,  			error = prctl_get_seccomp();  			break;  		case PR_SET_SECCOMP: -			error = prctl_set_seccomp(arg2); +			error = prctl_set_seccomp(arg2, (char __user *)arg3);  			break;  		case PR_GET_TSC:  			error = GET_TSC_CTL(arg2); @@ -1979,6 +1979,16 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,  			error = put_user(me->signal->is_child_subreaper,  					 (int __user *) arg2);  			break; +		case PR_SET_NO_NEW_PRIVS: +			if (arg2 != 1 || arg3 || arg4 || arg5) +				return -EINVAL; + +			current->no_new_privs = 1; +			break; +		case PR_GET_NO_NEW_PRIVS: +			if (arg2 || arg3 || arg4 || arg5) +				return -EINVAL; +			return current->no_new_privs ? 1 : 0;  		default:  			error = -EINVAL;  			break;  |