Re: [PATCH 1/4] prctl.2: uncomment PR_SET_MM options in Linux 3.5
From: Michael Kerrisk (man-pages) <hidden>
Date: 2014-02-22 09:06:22
Possibly related (same subject, not in this thread)
- 2014-02-13 · [PATCH 1/4] prctl.2: uncomment PR_SET_MM options in Linux 3.5 · Kir Kolyshkin <hidden>
On 02/13/2014 01:49 AM, Kir Kolyshkin wrote:
Some of the PR_SET_MM options were merged to vanilla kernel later, and appeared in Linux 3.5. Those are: - PR_SET_MM_ARG_START - PR_SET_MM_ARG_END - PR_SET_MM_ENV_START - PR_SET_MM_ENV_END - PR_SET_MM_AUXV - PR_SET_MM_EXE_FILE This patch merely uncomments description and error codes for these options, which were present but commented out, and removes the appropriate FIXME marks.
Hello Kir, Thanks for attending to this. I've applied all four of your patches. Cheers, Michael
quoted hunk
Signed-off-by: Kir Kolyshkin <redacted> --- man2/prctl.2 | 186 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 90 insertions(+), 96 deletions(-)diff --git a/man2/prctl.2 b/man2/prctl.2 index 70636e5..db8174a 100644 --- a/man2/prctl.2 +++ b/man2/prctl.2@@ -711,67 +711,64 @@ value. The requirements for the address are the same as for the .BR PR_SET_MM_START_BRK option. -.\" FIXME The following (until ========) is not yet in mainline kernel, -.\" so commented out for the moment. -.\" .TP -.\" .BR PR_SET_MM_ARG_START -.\" Set the address above which the program command line is placed. -.\" .TP -.\" .BR PR_SET_MM_ARG_END -.\" Set the address below which the program command line is placed. -.\" .TP -.\" .BR PR_SET_MM_ENV_START -.\" Set the address above which the program environment is placed. -.\" .TP -.\" .BR PR_SET_MM_ENV_END -.\" Set the address below which the program environment is placed. -.\" .IP -.\" The address passed with -.\" .BR PR_SET_MM_ARG_START , -.\" .BR PR_SET_MM_ARG_END , -.\" .BR PR_SET_MM_ENV_START , -.\" and -.\" .BR PR_SET_MM_ENV_END -.\" should belong to a process stack area. -.\" Thus, the corresponding memory area must be readable, writable, and -.\" (depending on the kernel configuration) have the -.\" .BR MAP_GROWSDOWN -.\" attribute set (see -.\" .BR mmap (2)). -.\" .TP -.\" .BR PR_SET_MM_AUXV -.\" Set a new auxiliary vector. -.\" The -.\" .I arg3 -.\" argument should provide the address of the vector. -.\" The -.\" .I arg4 -.\" is the size of the vector. -.\" .TP -.\" .BR PR_SET_MM_EXE_FILE -.\" 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 -.\" .IR \.text -.\" section). -.\" .IP -.\" The second limitation is that such transitions can be done only once -.\" in a process life time. -.\" Any further attempts will be rejected. -.\" This should help system administrators to monitor unusual -.\" symbolic-link transitions over all process running in a system. -.\" ========== END FIXME +.TP +.BR PR_SET_MM_ARG_START +Set the address above which the program command line is placed. +.TP +.BR PR_SET_MM_ARG_END +Set the address below which the program command line is placed. +.TP +.BR PR_SET_MM_ENV_START +Set the address above which the program environment is placed. +.TP +.BR PR_SET_MM_ENV_END +Set the address below which the program environment is placed. +.IP +The address passed with +.BR PR_SET_MM_ARG_START , +.BR PR_SET_MM_ARG_END , +.BR PR_SET_MM_ENV_START , +and +.BR PR_SET_MM_ENV_END +should belong to a process stack area. +Thus, the corresponding memory area must be readable, writable, and +(depending on the kernel configuration) have the +.BR MAP_GROWSDOWN +attribute set (see +.BR mmap (2)). +.TP +.BR PR_SET_MM_AUXV +Set a new auxiliary vector. +The +.I arg3 +argument should provide the address of the vector. +The +.I arg4 +is the size of the vector. +.TP +.BR PR_SET_MM_EXE_FILE +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 +.IR \.text +section). +.IP +The second limitation is that such transitions can be done only once +in a process life time. +Any further attempts will be rejected. +This should help system administrators to monitor unusual +symbolic-link transitions over all process running in a system. .RE .\" .SH RETURN VALUE@@ -916,41 +913,38 @@ is and the caller does not have the .B CAP_SYS_RESOURCE capability. -.\" FIXME The following (until ========) is not yet in mainline kernel, -.\" so commented out for the moment. -.\" .TP -.\" .B EACCES -.\" .I option -.\" is -.\" .BR PR_SET_MM , -.\" and -.\" .I arg3 -.\" is -.\" .BR PR_SET_MM_EXE_FILE , -.\" the file is not executable. -.\" .TP -.\" .B EBUSY -.\" .I option -.\" is -.\" .BR PR_SET_MM , -.\" .I arg3 -.\" is -.\" .BR PR_SET_MM_EXE_FILE , -.\" and this the second attempt to change the -.\" .I /proc/pid/exe -.\" symbolic link, which is prohibited. -.\" .TP -.\" .B EBADF -.\" .I option -.\" is -.\" .BR PR_SET_MM , -.\" .I arg3 -.\" is -.\" .BR PR_SET_MM_EXE_FILE , -.\" and the file descriptor passed in -.\" .I arg4 -.\" is not valid. -.\" ========== END FIXME +.TP +.B EACCES +.I option +is +.BR PR_SET_MM , +and +.I arg3 +is +.BR PR_SET_MM_EXE_FILE , +the file is not executable. +.TP +.B EBUSY +.I option +is +.BR PR_SET_MM , +.I arg3 +is +.BR PR_SET_MM_EXE_FILE , +and this the second attempt to change the +.I /proc/pid/exe +symbolic link, which is prohibited. +.TP +.B EBADF +.I option +is +.BR PR_SET_MM , +.I arg3 +is +.BR PR_SET_MM_EXE_FILE , +and the file descriptor passed in +.I arg4 +is not valid. .\" The following can't actually happen, because prctl() in .\" seccomp mode will cause SIGKILL. .\" .TP
-- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html