Historically (before Linux 2.6.23), base_addr was unsigned long for 32-bit code and unsigned int for 64-bit code. In other words, it was always a 32-bit value. When the ldt.h header files were unified, the type became unsigned int on all systems. Update modify_ldt.2 and set_thread_area.2 accordingly. Indeed, on x86, the GDT and LDT specify 32-bit bases for code and data segments, and this has nothing to do with the kernel. Reported-by: "Metzger, Markus T" <markus.t.metzger@xxxxxxxxx> Signed-off-by: Andy Lutomirski <luto@xxxxxxxxxx> --- man2/modify_ldt.2 | 2 +- man2/set_thread_area.2 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man2/modify_ldt.2 b/man2/modify_ldt.2 index 0db6efea47ad..ae979ed41a7d 100644 --- a/man2/modify_ldt.2 +++ b/man2/modify_ldt.2 @@ -79,7 +79,7 @@ structure is defined in \fI<asm/ldt.h>\fP as: .EX struct user_desc { unsigned int entry_number; - unsigned long base_addr; + unsigned int base_addr; unsigned int limit; unsigned int seg_32bit:1; unsigned int contents:2; diff --git a/man2/set_thread_area.2 b/man2/set_thread_area.2 index b2f0882ed9ad..3b6b22efd9aa 100644 --- a/man2/set_thread_area.2 +++ b/man2/set_thread_area.2 @@ -67,7 +67,7 @@ to a structure of the following type: .EX struct user_desc { unsigned int entry_number; - unsigned long base_addr; + unsigned int base_addr; unsigned int limit; unsigned int seg_32bit:1; unsigned int contents:2; -- 2.23.0