diff --git a/man2/modify_ldt.2 b/man2/modify_ldt.2 index 1c2cf9cde..d6e051497 100644 --- a/man2/modify_ldt.2 +++ b/man2/modify_ldt.2 @@ -187,12 +187,21 @@ The normal use for .BR modify_ldt (2) is to run legacy 16-bit or segmented 32-bit code. Not all kernels allow 16-bit segments to be installed, however. +.PP +Even on 64-bit kernels, +.BR modify_ldt (2) +cannot be used to create a long mode (i.e. 64-bit) code segment. The +undocumented field "lm" in +.IR user_desc +is not useful, and, despite its name, does not result in a long mode segment. .SH BUGS On 64-bit kernels before Linux 3.19, .\" commit e30ab185c490e9a9381385529e0fd32f0a399495 -setting the "lm" padding bit in +setting the "lm" bit in .IR user_desc -prevents the descriptor from being considered empty. +prevents the descriptor from being considered empty. Keep in mind that the +"lm" bit does not exist in the 32-bit headers, but these buggy kernels +will still notice the bit even when set in a 32-bit process. .SH SEE ALSO .BR arch_prctl (2), .BR set_thread_area (2),