All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Hubbard <jhubbard@nvidia.com>
To: Michal Hocko <mhocko@kernel.org>,
	Michael Kerrisk <mtk.manpages@gmail.com>
Cc: <linux-api@vger.kernel.org>, Khalid Aziz <khalid.aziz@oracle.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Andrew Morton <akpm@linux-foundation.org>,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	Andrea Arcangeli <aarcange@redhat.com>, <linux-mm@kvack.org>,
	LKML <linux-kernel@vger.kernel.org>, <linux-arch@vger.kernel.org>,
	Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v2] mmap.2: document new MAP_FIXED_SAFE flag
Date: Thu, 30 Nov 2017 10:31:12 -0800	[thread overview]
Message-ID: <1a96e274-a986-12b7-6e47-fc6355cbf637@nvidia.com> (raw)
In-Reply-To: <20171130082405.b77eknaiblgmpa4s@dhcp22.suse.cz>

On 11/30/2017 12:24 AM, Michal Hocko wrote:
> Updated version based on feedback from John.
> ---
> From ade1eba229b558431581448e7d7838f0e1fe2c49 Mon Sep 17 00:00:00 2001
> From: Michal Hocko <mhocko@suse.com>
> Date: Wed, 29 Nov 2017 15:32:08 +0100
> Subject: [PATCH] mmap.2: document new MAP_FIXED_SAFE flag
> 
> 4.16+ kernels offer a new MAP_FIXED_SAFE flag which allows the caller to
> atomicaly probe for a given address range.
> 
> [wording heavily updated by John Hubbard <jhubbard@nvidia.com>]
> Signed-off-by: Michal Hocko <mhocko@suse.com>
> ---
>  man2/mmap.2 | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/man2/mmap.2 b/man2/mmap.2
> index 385f3bfd5393..923bbb290875 100644
> --- a/man2/mmap.2
> +++ b/man2/mmap.2
> @@ -225,6 +225,22 @@ will fail.
>  Because requiring a fixed address for a mapping is less portable,
>  the use of this option is discouraged.
>  .TP
> +.BR MAP_FIXED_SAFE " (since Linux 4.16)"
> +Similar to MAP_FIXED with respect to the
> +.I
> +addr
> +enforcement, but different in that MAP_FIXED_SAFE never clobbers a pre-existing
> +mapped range. If the requested range would collide with an existing
> +mapping, then this call fails with
> +.B EEXIST.
> +This flag can therefore be used as a way to atomically (with respect to other
> +threads) attempt to map an address range: one thread will succeed; all others
> +will report failure. Please note that older kernels which do not recognize this
> +flag will typically (upon detecting a collision with a pre-existing mapping)
> +fall back a "non-MAP_FIXED" type of behavior: they will return an address that

...and now I've created my own typo: please make that "fall back to a"  (the 
"to" was missing).

Sorry about the churn. It turns out that the compiler doesn't catch these. :)

thanks,
John Hubbard


> +is different than the requested one. Therefore, backward-compatible software
> +should check the returned address against the requested address.
> +.TP
>  .B MAP_GROWSDOWN
>  This flag is used for stacks.
>  It indicates to the kernel virtual memory system that the mapping
> @@ -449,6 +465,12 @@ is not a valid file descriptor (and
>  .B MAP_ANONYMOUS
>  was not set).
>  .TP
> +.B EEXIST
> +range covered by
> +.IR addr ,
> +.IR length
> +is clashing with an existing mapping.
> +.TP
>  .B EINVAL
>  We don't like
>  .IR addr ,
> 

WARNING: multiple messages have this Message-ID (diff)
From: John Hubbard <jhubbard@nvidia.com>
To: Michal Hocko <mhocko@kernel.org>,
	Michael Kerrisk <mtk.manpages@gmail.com>
Cc: linux-api@vger.kernel.org, Khalid Aziz <khalid.aziz@oracle.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Andrew Morton <akpm@linux-foundation.org>,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	Andrea Arcangeli <aarcange@redhat.com>,
	linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
	linux-arch@vger.kernel.org, Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v2] mmap.2: document new MAP_FIXED_SAFE flag
Date: Thu, 30 Nov 2017 10:31:12 -0800	[thread overview]
Message-ID: <1a96e274-a986-12b7-6e47-fc6355cbf637@nvidia.com> (raw)
In-Reply-To: <20171130082405.b77eknaiblgmpa4s@dhcp22.suse.cz>

On 11/30/2017 12:24 AM, Michal Hocko wrote:
> Updated version based on feedback from John.
> ---
> From ade1eba229b558431581448e7d7838f0e1fe2c49 Mon Sep 17 00:00:00 2001
> From: Michal Hocko <mhocko@suse.com>
> Date: Wed, 29 Nov 2017 15:32:08 +0100
> Subject: [PATCH] mmap.2: document new MAP_FIXED_SAFE flag
> 
> 4.16+ kernels offer a new MAP_FIXED_SAFE flag which allows the caller to
> atomicaly probe for a given address range.
> 
> [wording heavily updated by John Hubbard <jhubbard@nvidia.com>]
> Signed-off-by: Michal Hocko <mhocko@suse.com>
> ---
>  man2/mmap.2 | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/man2/mmap.2 b/man2/mmap.2
> index 385f3bfd5393..923bbb290875 100644
> --- a/man2/mmap.2
> +++ b/man2/mmap.2
> @@ -225,6 +225,22 @@ will fail.
>  Because requiring a fixed address for a mapping is less portable,
>  the use of this option is discouraged.
>  .TP
> +.BR MAP_FIXED_SAFE " (since Linux 4.16)"
> +Similar to MAP_FIXED with respect to the
> +.I
> +addr
> +enforcement, but different in that MAP_FIXED_SAFE never clobbers a pre-existing
> +mapped range. If the requested range would collide with an existing
> +mapping, then this call fails with
> +.B EEXIST.
> +This flag can therefore be used as a way to atomically (with respect to other
> +threads) attempt to map an address range: one thread will succeed; all others
> +will report failure. Please note that older kernels which do not recognize this
> +flag will typically (upon detecting a collision with a pre-existing mapping)
> +fall back a "non-MAP_FIXED" type of behavior: they will return an address that

...and now I've created my own typo: please make that "fall back to a"  (the 
"to" was missing).

Sorry about the churn. It turns out that the compiler doesn't catch these. :)

thanks,
John Hubbard


> +is different than the requested one. Therefore, backward-compatible software
> +should check the returned address against the requested address.
> +.TP
>  .B MAP_GROWSDOWN
>  This flag is used for stacks.
>  It indicates to the kernel virtual memory system that the mapping
> @@ -449,6 +465,12 @@ is not a valid file descriptor (and
>  .B MAP_ANONYMOUS
>  was not set).
>  .TP
> +.B EEXIST
> +range covered by
> +.IR addr ,
> +.IR length
> +is clashing with an existing mapping.
> +.TP
>  .B EINVAL
>  We don't like
>  .IR addr ,
> 

WARNING: multiple messages have this Message-ID (diff)
From: John Hubbard <jhubbard@nvidia.com>
To: Michal Hocko <mhocko@kernel.org>,
	Michael Kerrisk <mtk.manpages@gmail.com>
Cc: linux-api@vger.kernel.org, Khalid Aziz <khalid.aziz@oracle.com>,
	Michael Ellerman <mpe@ellerman.id.au>,
	Andrew Morton <akpm@linux-foundation.org>,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	Andrea Arcangeli <aarcange@redhat.com>,
	linux-mm@kvack.org, LKML <linux-kernel@vger.kernel.org>,
	linux-arch@vger.kernel.org, Florian Weimer <fweimer@redhat.com>
Subject: Re: [PATCH v2] mmap.2: document new MAP_FIXED_SAFE flag
Date: Thu, 30 Nov 2017 10:31:12 -0800	[thread overview]
Message-ID: <1a96e274-a986-12b7-6e47-fc6355cbf637@nvidia.com> (raw)
In-Reply-To: <20171130082405.b77eknaiblgmpa4s@dhcp22.suse.cz>

On 11/30/2017 12:24 AM, Michal Hocko wrote:
> Updated version based on feedback from John.
> ---
> From ade1eba229b558431581448e7d7838f0e1fe2c49 Mon Sep 17 00:00:00 2001
> From: Michal Hocko <mhocko@suse.com>
> Date: Wed, 29 Nov 2017 15:32:08 +0100
> Subject: [PATCH] mmap.2: document new MAP_FIXED_SAFE flag
> 
> 4.16+ kernels offer a new MAP_FIXED_SAFE flag which allows the caller to
> atomicaly probe for a given address range.
> 
> [wording heavily updated by John Hubbard <jhubbard@nvidia.com>]
> Signed-off-by: Michal Hocko <mhocko@suse.com>
> ---
>  man2/mmap.2 | 22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)
> 
> diff --git a/man2/mmap.2 b/man2/mmap.2
> index 385f3bfd5393..923bbb290875 100644
> --- a/man2/mmap.2
> +++ b/man2/mmap.2
> @@ -225,6 +225,22 @@ will fail.
>  Because requiring a fixed address for a mapping is less portable,
>  the use of this option is discouraged.
>  .TP
> +.BR MAP_FIXED_SAFE " (since Linux 4.16)"
> +Similar to MAP_FIXED with respect to the
> +.I
> +addr
> +enforcement, but different in that MAP_FIXED_SAFE never clobbers a pre-existing
> +mapped range. If the requested range would collide with an existing
> +mapping, then this call fails with
> +.B EEXIST.
> +This flag can therefore be used as a way to atomically (with respect to other
> +threads) attempt to map an address range: one thread will succeed; all others
> +will report failure. Please note that older kernels which do not recognize this
> +flag will typically (upon detecting a collision with a pre-existing mapping)
> +fall back a "non-MAP_FIXED" type of behavior: they will return an address that

...and now I've created my own typo: please make that "fall back to a"  (the 
"to" was missing).

Sorry about the churn. It turns out that the compiler doesn't catch these. :)

thanks,
John Hubbard


> +is different than the requested one. Therefore, backward-compatible software
> +should check the returned address against the requested address.
> +.TP
>  .B MAP_GROWSDOWN
>  This flag is used for stacks.
>  It indicates to the kernel virtual memory system that the mapping
> @@ -449,6 +465,12 @@ is not a valid file descriptor (and
>  .B MAP_ANONYMOUS
>  was not set).
>  .TP
> +.B EEXIST
> +range covered by
> +.IR addr ,
> +.IR length
> +is clashing with an existing mapping.
> +.TP
>  .B EINVAL
>  We don't like
>  .IR addr ,
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2017-11-30 18:31 UTC|newest]

Thread overview: 117+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-29 14:42 [PATCH 0/2] mm: introduce MAP_FIXED_SAFE Michal Hocko
2017-11-29 14:42 ` Michal Hocko
2017-11-29 14:42 ` Michal Hocko
2017-11-29 14:42 ` [PATCH 1/2] " Michal Hocko
2017-11-29 14:42   ` Michal Hocko
2017-11-29 14:42   ` Michal Hocko
2017-12-06  5:15   ` Michael Ellerman
2017-12-06  5:15     ` Michael Ellerman
2017-12-06  9:27     ` Michal Hocko
2017-12-06  9:27       ` Michal Hocko
2017-12-06 10:02       ` Michal Hocko
2017-12-06 10:02         ` Michal Hocko
2017-12-07 12:07   ` Pavel Machek
2017-12-07 12:07     ` Pavel Machek
2017-11-29 14:42 ` [PATCH 2/2] fs, elf: drop MAP_FIXED usage from elf_map Michal Hocko
2017-11-29 14:42   ` Michal Hocko
2017-11-29 14:42   ` Michal Hocko
2017-11-29 17:45   ` Khalid Aziz
2017-11-29 17:45     ` Khalid Aziz
2018-05-29 22:21     ` Mike Kravetz
2018-05-30  8:02       ` Michal Hocko
2018-05-30 15:00         ` Mike Kravetz
2018-05-30 16:25           ` Michal Hocko
2018-05-31  0:51             ` Mike Kravetz
2018-05-31  9:24               ` Michal Hocko
2018-05-31 21:46                 ` Mike Kravetz
2017-11-29 14:45 ` [PATCH] mmap.2: document new MAP_FIXED_SAFE flag Michal Hocko
2017-11-29 14:45   ` Michal Hocko
2017-11-29 14:45   ` Michal Hocko
2017-11-30  3:16   ` John Hubbard
2017-11-30  3:16     ` John Hubbard
2017-11-30  3:16     ` John Hubbard
2017-11-30  8:23     ` Michal Hocko
2017-11-30  8:23       ` Michal Hocko
2017-11-30  8:24   ` [PATCH v2] " Michal Hocko
2017-11-30  8:24     ` Michal Hocko
2017-11-30  8:24     ` Michal Hocko
2017-11-30  8:24     ` Michal Hocko
2017-11-30 18:31     ` John Hubbard [this message]
2017-11-30 18:31       ` John Hubbard
2017-11-30 18:31       ` John Hubbard
2017-11-30 18:39       ` Michal Hocko
2017-11-30 18:39         ` Michal Hocko
2017-11-29 15:13 ` [PATCH 0/2] mm: introduce MAP_FIXED_SAFE Rasmus Villemoes
2017-11-29 15:13   ` Rasmus Villemoes
2017-11-29 15:13   ` Rasmus Villemoes
2017-11-29 15:50   ` Michal Hocko
2017-11-29 15:50     ` Michal Hocko
2017-11-29 15:50     ` Michal Hocko
2017-11-29 22:15   ` Kees Cook
2017-11-29 22:15     ` Kees Cook
2017-11-29 22:12 ` Kees Cook
2017-11-29 22:12   ` Kees Cook
2017-11-29 22:25 ` Kees Cook
2017-11-29 22:25   ` Kees Cook
2017-11-30  6:58   ` Michal Hocko
2017-11-30  6:58     ` Michal Hocko
2017-11-30  6:58     ` Michal Hocko
2017-12-01 15:26     ` Cyril Hrubis
2017-12-01 15:26       ` Cyril Hrubis
2017-12-06  4:51       ` Michael Ellerman
2017-12-06  4:51         ` Michael Ellerman
2017-12-06  4:54         ` Matthew Wilcox
2017-12-06  4:54           ` Matthew Wilcox
2017-12-06  7:03           ` Matthew Wilcox
2017-12-06  7:03             ` Matthew Wilcox
2017-12-06  7:33             ` John Hubbard
2017-12-06  7:33               ` John Hubbard
2017-12-06  7:35               ` Florian Weimer
2017-12-06  7:35                 ` Florian Weimer
2017-12-06  7:35                 ` Florian Weimer
2017-12-06  8:06                 ` John Hubbard
2017-12-06  8:06                   ` John Hubbard
2017-12-06  8:06                   ` John Hubbard
2017-12-06  8:06                   ` John Hubbard
2017-12-06  8:54                   ` Florian Weimer
2017-12-06  8:54                     ` Florian Weimer
2017-12-06  8:54                     ` Florian Weimer
2017-12-07  5:46             ` Michael Ellerman
2017-12-07  5:46               ` Michael Ellerman
2017-12-07  5:46               ` Michael Ellerman
2017-12-07 19:14               ` Kees Cook
2017-12-07 19:14                 ` Kees Cook
2017-12-07 19:57                 ` Matthew Wilcox
2017-12-07 19:57                   ` Matthew Wilcox
2017-12-07 19:57                   ` Matthew Wilcox
2017-12-08  8:33                   ` Michal Hocko
2017-12-08  8:33                     ` Michal Hocko
2017-12-08 20:13                     ` Kees Cook
2017-12-08 20:13                       ` Kees Cook
2017-12-08 20:13                       ` Kees Cook
2017-12-08 20:57                       ` Matthew Wilcox
2017-12-08 20:57                         ` Matthew Wilcox
2017-12-08 20:57                         ` Matthew Wilcox
2017-12-08 11:08                   ` Michael Ellerman
2017-12-08 11:08                     ` Michael Ellerman
2017-12-08 14:27                     ` Pavel Machek
2017-12-08 20:31                       ` Cyril Hrubis
2017-12-08 20:31                         ` Cyril Hrubis
2017-12-08 20:31                         ` Cyril Hrubis
2017-12-08 20:47                       ` Florian Weimer
2017-12-08 20:47                         ` Florian Weimer
2017-12-08 20:47                         ` Florian Weimer
2017-12-08 14:33                     ` David Laight
2017-12-08 14:33                       ` David Laight
2017-12-06  4:50     ` Michael Ellerman
2017-12-06  4:50       ` Michael Ellerman
2017-12-06  7:33       ` Rasmus Villemoes
2017-12-06  7:33         ` Rasmus Villemoes
2017-12-06  7:33         ` Rasmus Villemoes
2017-12-06  9:08         ` Michal Hocko
2017-12-06  9:08           ` Michal Hocko
2017-12-06  9:08           ` Michal Hocko
2017-12-07  0:19           ` Kees Cook
2017-12-07  0:19             ` Kees Cook
2017-12-07  1:08             ` John Hubbard
2017-12-07  1:08               ` John Hubbard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1a96e274-a986-12b7-6e47-fc6355cbf637@nvidia.com \
    --to=jhubbard@nvidia.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=fweimer@redhat.com \
    --cc=khalid.aziz@oracle.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux@armlinux.org.uk \
    --cc=mhocko@kernel.org \
    --cc=mpe@ellerman.id.au \
    --cc=mtk.manpages@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.