git: 2f514e6f13de - main - linux(4): implement PR_SET_NO_NEW_PRIVS

Edward Tomasz Napierala trasz at FreeBSD.org
Sat Jul 3 07:59:53 UTC 2021


The branch main has been updated by trasz:

URL: https://cgit.FreeBSD.org/src/commit/?id=2f514e6f13de41aa9ad5f563ed0decc66e91f99c

commit 2f514e6f13de41aa9ad5f563ed0decc66e91f99c
Author:     Edward Tomasz Napierala <trasz at FreeBSD.org>
AuthorDate: 2021-07-03 07:41:59 +0000
Commit:     Edward Tomasz Napierala <trasz at FreeBSD.org>
CommitDate: 2021-07-03 07:42:37 +0000

    linux(4): implement PR_SET_NO_NEW_PRIVS
    
    This makes prctl(2) support PR_SET_NO_NEW_PRIVS, by mapping it
    to the native PROC_NO_NEW_PRIVS_CTL procctl(2).
    
    Sponsored By:   EPSRC
    Differential Revision:  https://reviews.freebsd.org/D30973
---
 sys/compat/linux/linux_misc.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index 65a5b0dd24d7..559eb6463da0 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -1982,7 +1982,7 @@ linux_capset(struct thread *td, struct linux_capset_args *uap)
 int
 linux_prctl(struct thread *td, struct linux_prctl_args *args)
 {
-	int error = 0, max_size;
+	int error = 0, max_size, arg;
 	struct proc *p = td->td_proc;
 	char comm[LINUX_MAX_COMM_LEN];
 	int pdeath_signal, trace_state;
@@ -2113,8 +2113,10 @@ linux_prctl(struct thread *td, struct linux_prctl_args *args)
 		error = EINVAL;
 		break;
 	case LINUX_PR_SET_NO_NEW_PRIVS:
-		linux_msg(td, "unsupported prctl PR_SET_NO_NEW_PRIVS");
-		error = EINVAL;
+		arg = args->arg2 == 1 ?
+		    PROC_NO_NEW_PRIVS_ENABLE : PROC_NO_NEW_PRIVS_DISABLE;
+		error = kern_procctl(td, P_PID, p->p_pid,
+		    PROC_NO_NEW_PRIVS_CTL, &arg);
 		break;
 	case LINUX_PR_SET_PTRACER:
 		linux_msg(td, "unsupported prctl PR_SET_PTRACER");


More information about the dev-commits-src-main mailing list