diff options
Diffstat (limited to 'kernel/sys.c')
| -rw-r--r-- | kernel/sys.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/kernel/sys.c b/kernel/sys.c index 40701538fbd1..9eb7fcab8df6 100644 --- a/kernel/sys.c +++ b/kernel/sys.c @@ -1706,7 +1706,7 @@ static int prctl_set_mm(int opt, unsigned long addr,  	if (arg4 | arg5)  		return -EINVAL; -	if (!capable(CAP_SYS_ADMIN)) +	if (!capable(CAP_SYS_RESOURCE))  		return -EPERM;  	if (addr >= TASK_SIZE) @@ -1962,6 +1962,14 @@ SYSCALL_DEFINE5(prctl, int, option, unsigned long, arg2, unsigned long, arg3,  		case PR_SET_MM:  			error = prctl_set_mm(arg2, arg3, arg4, arg5);  			break; +		case PR_SET_CHILD_SUBREAPER: +			me->signal->is_child_subreaper = !!arg2; +			error = 0; +			break; +		case PR_GET_CHILD_SUBREAPER: +			error = put_user(me->signal->is_child_subreaper, +					 (int __user *) arg2); +			break;  		default:  			error = -EINVAL;  			break; | 
