aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-05-29 01:02:27 +0200
committerAlejandro Colomar <alx@kernel.org>2024-05-31 01:42:34 +0200
commit129c80157779fdd32c75692e4ac84aad226e0cdd (patch)
treeaa5981f91f12e240198a8f2f7a25ccf7a71eb684
parentd89252d5abd25df87557318fc7c6900a97a430da (diff)
downloadman-pages-129c80157779fdd32c75692e4ac84aad226e0cdd.tar.gz
PR_SET_MM.2const, PR_SET_MM_EXE_FILE.2const: Split PR_SET_MM_EXE_FILE from PR_SET_MM(2const)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r--man/man2const/PR_SET_MM.2const57
-rw-r--r--man/man2const/PR_SET_MM_EXE_FILE.2const80
2 files changed, 83 insertions, 54 deletions
diff --git a/man/man2const/PR_SET_MM.2const b/man/man2const/PR_SET_MM.2const
index aa3d563681..05f57f34a2 100644
--- a/man/man2const/PR_SET_MM.2const
+++ b/man/man2const/PR_SET_MM.2const
@@ -47,8 +47,6 @@ is one of the options below.
.B PR_SET_MM_START_BRK
.TQ
.B PR_SET_MM_BRK
-.P
-The following options are available since Linux 3.5.
.TQ
.B PR_SET_MM_ARG_START
.TQ
@@ -59,36 +57,8 @@ The following options are available since Linux 3.5.
.B PR_SET_MM_ENV_END
.TQ
.B PR_SET_MM_AUXV
-.TP
-.B PR_SET_MM_EXE_FILE
-.\" commit b32dfe377102ce668775f8b6b1461f7ad428f8b6
-Supersede the
-.IR /proc/ pid /exe
-symbolic link with a new one pointing to a new executable file
-identified by the file descriptor provided in
-.I arg3
-argument.
-The file descriptor should be obtained with a regular
-.BR open (2)
-call.
-.IP
-To change the symbolic link, one needs to unmap all existing
-executable memory areas, including those created by the kernel itself
-(for example the kernel usually creates at least one executable
-memory area for the ELF
-.I .text
-section).
-.IP
-In Linux 4.9 and earlier, the
-.\" commit 3fb4afd9a504c2386b8435028d43283216bf588e
+.TQ
.B PR_SET_MM_EXE_FILE
-operation can be performed only once in a process's lifetime;
-attempting to perform the operation a second time results in the error
-.BR EPERM .
-This restriction was enforced for security reasons that were subsequently
-deemed specious,
-and the restriction was removed in Linux 4.10 because some
-user-space applications needed to perform this operation more than once.
.P
The following options are available since Linux 3.18.
.\" commit f606b77f1a9e362451aca8f81d8f36a3a112139e
@@ -125,28 +95,6 @@ On error, \-1 is returned, and
is set to indicate the error.
.SH ERRORS
.TP
-.B EACCES
-.I op
-is
-.BR PR_SET_MM_EXE_FILE ,
-the file is not executable.
-.TP
-.B EBADF
-.I op
-is
-.BR PR_SET_MM_EXE_FILE ,
-and the file descriptor passed in
-.I arg3
-is not valid.
-.TP
-.B EBUSY
-.I op
-is
-.BR PR_SET_MM_EXE_FILE ,
-and this the second attempt to change the
-.IR /proc/ pid /exe
-symbolic link, which is prohibited.
-.TP
.B EINVAL
.I op
is not a valid value.
@@ -178,4 +126,5 @@ option enabled.
.BR PR_SET_MM_ARG_START (2const),
.BR PR_SET_MM_ARG_END (2const),
.BR PR_SET_MM_ENV_START (2const),
-.BR PR_SET_MM_ENV_END (2const)
+.BR PR_SET_MM_ENV_END (2const),
+.BR PR_SET_MM_EXE_FILE (2const)
diff --git a/man/man2const/PR_SET_MM_EXE_FILE.2const b/man/man2const/PR_SET_MM_EXE_FILE.2const
new file mode 100644
index 0000000000..7e720ab76e
--- /dev/null
+++ b/man/man2const/PR_SET_MM_EXE_FILE.2const
@@ -0,0 +1,80 @@
+.\" Copyright 2012, Cyrill Gorcunov <gorcunov@openvz.org>
+.\" Copyright 2012, 2013, 2015, Michael Kerrisk <mtk.manpages@gmail.com>
+.\" Copyright 2024, Alejandro Colomar <alx@kernel.org>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH PR_SET_MM_EXE_FILE 2const (date) "Linux man-pages (unreleased)"
+.SH NAME
+PR_SET_MM_EXE_FILE
+\-
+modify kernel memory map descriptor fields
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.B #include <sys/prctl.h>
+.P
+.BI "int prctl(PR_SET_MM, PR_SET_MM_EXE_FILE, long " fd ", 0L, 0L);"
+.fi
+.SH DESCRIPTION
+Supersede the
+.IR /proc/ pid /exe
+symbolic link with a new one pointing to a new executable file
+identified by the file descriptor provided in the
+.I fd
+argument.
+The file descriptor should be obtained with a regular
+.BR open (2)
+call.
+.P
+To change the symbolic link, one needs to unmap all existing
+executable memory areas, including those created by the kernel itself
+(for example the kernel usually creates at least one executable
+memory area for the ELF
+.I .text
+section).
+.SH RETURN VALUE
+On success,
+0 is returned.
+On error, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EACCES
+The file is not executable.
+.TP
+.B EBADF
+The file descriptor passed in
+.I fd
+is not valid.
+.TP
+.B EBUSY
+This the second attempt to change the
+.IR /proc/ pid /exe
+symbolic link.
+.SH FILES
+.TP
+.IR /proc/ pid /exe
+.SH STANDARDS
+Linux.
+.SH HISTORY
+Linux 3.5.
+.\" commit b32dfe377102ce668775f8b6b1461f7ad428f8b6
+.P
+In Linux 4.9 and earlier, the
+.\" commit 3fb4afd9a504c2386b8435028d43283216bf588e
+.B PR_SET_MM_EXE_FILE
+operation can be performed only once in a process's lifetime;
+attempting to perform the operation a second time results in the error
+.BR EPERM .
+This restriction was enforced for security reasons that were subsequently
+deemed specious,
+and the restriction was removed in Linux 4.10 because some
+user-space applications needed to perform this operation more than once.
+.SH SEE ALSO
+.BR prctl (2),
+.BR PR_SET_MM (2const),
+.BR proc_pid_exe (5)