From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael Kerrisk (man-pages)" Subject: Re: [PATCH] mmap.2: MAP_FIXED is okay if the address range has been reserved Date: Thu, 12 Apr 2018 20:37:29 +0200 Message-ID: References: <20180412153941.170849-1-jannh@google.com> Reply-To: mtk.manpages@gmail.com Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: John Hubbard Cc: Jann Horn , linux-man , Michal Hocko , Andrew Morton , Linux-MM , lkml , Linux API List-Id: linux-man@vger.kernel.org Hi John, On 12 April 2018 at 20:33, John Hubbard 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 >> --- >> 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/