aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man/man2const/PR_MPX_ENABLE_MANAGEMENT.2const97
1 files changed, 45 insertions, 52 deletions
diff --git a/man/man2const/PR_MPX_ENABLE_MANAGEMENT.2const b/man/man2const/PR_MPX_ENABLE_MANAGEMENT.2const
index 5f18c2fe3f..977618990e 100644
--- a/man/man2const/PR_MPX_ENABLE_MANAGEMENT.2const
+++ b/man/man2const/PR_MPX_ENABLE_MANAGEMENT.2const
@@ -18,32 +18,18 @@ Standard C library
.nf
.B #include <sys/prctl.h>
.P
-.BI "int prctl(int " op ", ...);"
+.B [[deprecated]] int prctl(PR_MPX_ENABLE_MANAGEMENT, 0L, 0L, 0L, 0L);
+.B [[deprecated]] int prctl(PR_MPX_DISABLE_MANAGEMENT, 0L, 0L, 0L, 0L);
.fi
.SH DESCRIPTION
-.TP
-.B PR_MPX_ENABLE_MANAGEMENT
-.TQ
-.BR PR_MPX_DISABLE_MANAGEMENT " (since Linux 3.19, removed in Linux 5.4; only on x86)"
-.\" commit fe3d197f84319d3bce379a9c0dc17b1f48ad358c
-.\" See also http://lwn.net/Articles/582712/
-.\" See also https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
Enable or disable kernel management of Memory Protection eXtensions (MPX)
bounds tables.
-The
-.IR arg2 ,
-.IR arg3 ,
-.IR arg4 ,
-and
-.I arg5
-.\" commit e9d1b4f3c60997fe197bf0243cb4a41a44387a88
-arguments must be zero.
-.IP
-MPX is a hardware-assisted mechanism for performing bounds checking on
-pointers.
+.P
+MPX is a hardware-assisted mechanism for
+performing bounds checking on pointers.
It consists of a set of registers storing bounds information
-and a set of special instruction prefixes that tell the CPU on which
-instructions it should do bounds enforcement.
+and a set of special instruction prefixes that tell the CPU
+on which instructions it should do bounds enforcement.
There is a limited number of these registers and
when there are more pointers than registers,
their contents must be "spilled" into a set of tables.
@@ -51,24 +37,28 @@ These tables are called "bounds tables" and the MPX
.BR prctl ()
operations control
whether the kernel manages their allocation and freeing.
-.IP
-When management is enabled, the kernel will take over allocation
-and freeing of the bounds tables.
+.P
+When management is enabled,
+the kernel will take over
+allocation and freeing of the bounds tables.
It does this by trapping the #BR exceptions that result
at first use of missing bounds tables and
instead of delivering the exception to user space,
it allocates the table and populates the bounds directory
with the location of the new table.
-For freeing, the kernel checks to see if bounds tables are
-present for memory which is not allocated, and frees them if so.
-.IP
+For freeing,
+the kernel checks to see if bounds tables are
+present for memory which is not allocated,
+and frees them if so.
+.P
Before enabling MPX management using
.BR PR_MPX_ENABLE_MANAGEMENT ,
-the application must first have allocated a user-space buffer for
-the bounds directory and placed the location of that directory in the
+the application must first have allocated
+a user-space buffer for the bounds directory and
+placed the location of that directory in the
.I bndcfgu
register.
-.IP
+.P
These calls fail if the CPU or kernel does not support MPX.
Kernel support for MPX is enabled via the
.B CONFIG_X86_INTEL_MPX
@@ -76,18 +66,18 @@ configuration option.
You can check whether the CPU supports MPX by looking for the
.I mpx
CPUID bit, like with the following command:
-.IP
+.P
.in +4n
.EX
cat /proc/cpuinfo | grep \[aq] mpx \[aq]
.EE
.in
-.IP
-A thread may not switch in or out of long (64-bit) mode while MPX is
-enabled.
-.IP
+.P
+A thread may not switch in or out of long (64-bit) mode
+while MPX is enabled.
+.P
All threads in a process are affected by these calls.
-.IP
+.P
The child of a
.BR fork (2)
inherits the state of MPX management.
@@ -96,15 +86,6 @@ During
MPX management is reset to a state as if
.B PR_MPX_DISABLE_MANAGEMENT
had been called.
-.IP
-For further information on Intel MPX, see the kernel source file
-.IR Documentation/x86/intel_mpx.txt .
-.IP
-.\" commit f240652b6032b48ad7fa35c5e701cc4c8d697c0b
-.\" See also https://lkml.kernel.org/r/20190705175321.DB42F0AD@viggo.jf.intel.com
-Due to a lack of toolchain support,
-.BR PR_MPX_ENABLE_MANAGEMENT " and " PR_MPX_DISABLE_MANAGEMENT
-are not supported in Linux 5.4 and later.
.SH RETURN VALUE
On success,
0 is returned.
@@ -114,15 +95,27 @@ is set to indicate the error.
.SH ERRORS
.TP
.B ENXIO
-.I op
-was
-.B PR_MPX_ENABLE_MANAGEMENT
-or
-.B PR_MPX_DISABLE_MANAGEMENT
-and the kernel or the CPU does not support MPX management.
+The kernel or the CPU does not support MPX management.
Check that the kernel and processor have MPX support.
.SH STANDARDS
-Linux.
+None.
.SH HISTORY
+Linux 3.19.
+Removed in Linux 5.4.
+Only on x86.
+.\" commit fe3d197f84319d3bce379a9c0dc17b1f48ad358c
+.\" See also http://lwn.net/Articles/582712/
+.\" See also https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
+.P
+.\" commit f240652b6032b48ad7fa35c5e701cc4c8d697c0b
+.\" See also https://lkml.kernel.org/r/20190705175321.DB42F0AD@viggo.jf.intel.com
+Due to a lack of toolchain support,
+.B PR_MPX_ENABLE_MANAGEMENT
+and
+.B PR_MPX_DISABLE_MANAGEMENT
+are not supported in Linux 5.4 and later.
.SH SEE ALSO
.BR prctl (2)
+.P
+For further information on Intel MPX, see the kernel source file
+.IR Documentation/\:x86/\:intel_mpx.txt .