Hi John, On 12 April 2018 at 20:33, John Hubbard <jhubbard@xxxxxxxxxx> wrote: > On 04/12/2018 08:39 AM, Jann Horn wrote: >> Clarify that MAP_FIXED is appropriate if the specified address range has >> been reserved using an existing mapping, but shouldn't be used otherwise. >> >> Signed-off-by: Jann Horn <jannh@xxxxxxxxxx> >> --- >> man2/mmap.2 | 19 +++++++++++-------- >> 1 file changed, 11 insertions(+), 8 deletions(-) >> >> diff --git a/man2/mmap.2 b/man2/mmap.2 >> index bef8b4432..80c9ec285 100644 >> --- a/man2/mmap.2 >> +++ b/man2/mmap.2 >> @@ -253,8 +253,9 @@ Software that aspires to be portable should use this option with care, >> keeping in mind that the exact layout of a process's memory mappings >> is allowed to change significantly between kernel versions, >> C library versions, and operating system releases. >> -Furthermore, this option is extremely hazardous (when used on its own), >> -because it forcibly removes preexisting mappings, >> +This option should only be used when the specified memory region has >> +already been reserved using another mapping; otherwise, it is extremely >> +hazardous because it forcibly removes preexisting mappings, >> making it easy for a multithreaded process to corrupt its own address space. > > Yes, that's clearer and provides more information than before. > >> .IP >> For example, suppose that thread A looks through >> @@ -284,13 +285,15 @@ and the PAM libraries >> .UR http://www.linux-pam.org >> .UE . >> .IP >> -Newer kernels >> -(Linux 4.17 and later) have a >> +For cases in which the specified memory region has not been reserved using an >> +existing mapping, newer kernels (Linux 4.17 and later) provide an option >> .B MAP_FIXED_NOREPLACE >> -option that avoids the corruption problem; if available, >> -.B MAP_FIXED_NOREPLACE >> -should be preferred over >> -.BR MAP_FIXED . >> +that should be used instead; older kernels require the caller to use >> +.I addr >> +as a hint (without >> +.BR MAP_FIXED ) > > Here, I got lost: the sentence suddenly jumps into explaining non-MAP_FIXED > behavior, in the MAP_FIXED section. Maybe if you break up the sentence, and > possibly omit non-MAP_FIXED discussion, it will help. Hmmm -- true. That piece could be a little clearer. Jann, I've already pushed the existing patch. Do you want to add a patch on top? Thanks, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/