All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
To: Michal Hocko <miso-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>,
	Michael Kerrisk
	<mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	Linus Torvalds
	<torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	David Rientjes <rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>,
	LKML <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Linux API <linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org,
	Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
Subject: Re: [PATCH 1/2] mmap.2: clarify MAP_LOCKED semantic
Date: Wed, 11 May 2016 13:07:33 +0200	[thread overview]
Message-ID: <57331275.9000805@infradead.org> (raw)
In-Reply-To: <1431527892-2996-2-git-send-email-miso-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>



On 05/13/2015 04:38 PM, Michal Hocko wrote:
> From: Michal Hocko <mhocko-AlSwsSmVLrQ@public.gmane.org>
>
> MAP_LOCKED had a subtly different semantic from mmap(2)+mlock(2) since
> it has been introduced.
> mlock(2) fails if the memory range cannot get populated to guarantee
> that no future major faults will happen on the range. mmap(MAP_LOCKED) on
> the other hand silently succeeds even if the range was populated only
> partially.
>
> Fixing this subtle difference in the kernel is rather awkward because
> the memory population happens after mm locks have been dropped and so
> the cleanup before returning failure (munlock) could operate on something
> else than the originally mapped area.
>
> E.g. speculative userspace page fault handler catching SEGV and doing
> mmap(fault_addr, MAP_FIXED|MAP_LOCKED) might discard portion of a racing
> mmap and lead to lost data. Although it is not clear whether such a
> usage would be valid, mmap page doesn't explicitly describe requirements
> for threaded applications so we cannot exclude this possibility.
>
> This patch makes the semantic of MAP_LOCKED explicit and suggest using
> mmap + mlock as the only way to guarantee no later major page faults.
>

URGH, this really blows chunks. It basically means MAP_LOCKED is 
pointless cruft and we might as well remove it.

Why not fix it proper?

WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: Michal Hocko <miso@dhcp22.suse.cz>,
	Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Rientjes <rientjes@google.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux API <linux-api@vger.kernel.org>,
	linux-mm@kvack.org, Michal Hocko <mhocko@suse.cz>
Subject: Re: [PATCH 1/2] mmap.2: clarify MAP_LOCKED semantic
Date: Wed, 11 May 2016 13:07:33 +0200	[thread overview]
Message-ID: <57331275.9000805@infradead.org> (raw)
In-Reply-To: <1431527892-2996-2-git-send-email-miso@dhcp22.suse.cz>



On 05/13/2015 04:38 PM, Michal Hocko wrote:
> From: Michal Hocko <mhocko@suse.cz>
>
> MAP_LOCKED had a subtly different semantic from mmap(2)+mlock(2) since
> it has been introduced.
> mlock(2) fails if the memory range cannot get populated to guarantee
> that no future major faults will happen on the range. mmap(MAP_LOCKED) on
> the other hand silently succeeds even if the range was populated only
> partially.
>
> Fixing this subtle difference in the kernel is rather awkward because
> the memory population happens after mm locks have been dropped and so
> the cleanup before returning failure (munlock) could operate on something
> else than the originally mapped area.
>
> E.g. speculative userspace page fault handler catching SEGV and doing
> mmap(fault_addr, MAP_FIXED|MAP_LOCKED) might discard portion of a racing
> mmap and lead to lost data. Although it is not clear whether such a
> usage would be valid, mmap page doesn't explicitly describe requirements
> for threaded applications so we cannot exclude this possibility.
>
> This patch makes the semantic of MAP_LOCKED explicit and suggest using
> mmap + mlock as the only way to guarantee no later major page faults.
>

URGH, this really blows chunks. It basically means MAP_LOCKED is 
pointless cruft and we might as well remove it.

Why not fix it proper?

--
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>

WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: Michal Hocko <miso@dhcp22.suse.cz>,
	Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	David Rientjes <rientjes@google.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Linux API <linux-api@vger.kernel.org>,
	linux-mm@kvack.org, Michal Hocko <mhocko@suse.cz>
Subject: Re: [PATCH 1/2] mmap.2: clarify MAP_LOCKED semantic
Date: Wed, 11 May 2016 13:07:33 +0200	[thread overview]
Message-ID: <57331275.9000805@infradead.org> (raw)
In-Reply-To: <1431527892-2996-2-git-send-email-miso@dhcp22.suse.cz>



On 05/13/2015 04:38 PM, Michal Hocko wrote:
> From: Michal Hocko <mhocko@suse.cz>
>
> MAP_LOCKED had a subtly different semantic from mmap(2)+mlock(2) since
> it has been introduced.
> mlock(2) fails if the memory range cannot get populated to guarantee
> that no future major faults will happen on the range. mmap(MAP_LOCKED) on
> the other hand silently succeeds even if the range was populated only
> partially.
>
> Fixing this subtle difference in the kernel is rather awkward because
> the memory population happens after mm locks have been dropped and so
> the cleanup before returning failure (munlock) could operate on something
> else than the originally mapped area.
>
> E.g. speculative userspace page fault handler catching SEGV and doing
> mmap(fault_addr, MAP_FIXED|MAP_LOCKED) might discard portion of a racing
> mmap and lead to lost data. Although it is not clear whether such a
> usage would be valid, mmap page doesn't explicitly describe requirements
> for threaded applications so we cannot exclude this possibility.
>
> This patch makes the semantic of MAP_LOCKED explicit and suggest using
> mmap + mlock as the only way to guarantee no later major page faults.
>

URGH, this really blows chunks. It basically means MAP_LOCKED is 
pointless cruft and we might as well remove it.

Why not fix it proper?

  parent reply	other threads:[~2016-05-11 11:07 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-13 14:38 [PATCH 0/2] man-pages: clarify MAP_LOCKED semantic Michal Hocko
2015-05-13 14:38 ` Michal Hocko
     [not found] ` <1431527892-2996-1-git-send-email-miso-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2015-05-13 14:38   ` [PATCH 1/2] mmap.2: " Michal Hocko
2015-05-13 14:38     ` Michal Hocko
2015-05-13 14:38     ` Michal Hocko
2015-05-13 14:45     ` Eric B Munson
     [not found]       ` <20150513144506.GD1227-JqFfY2XvxFXQT0dZR+AlfA@public.gmane.org>
2015-05-13 14:48         ` Eric B Munson
2015-05-13 14:48           ` Eric B Munson
2015-05-14  8:01         ` Michal Hocko
2015-05-14  8:01           ` Michal Hocko
2015-05-14  8:01           ` Michal Hocko
2015-05-14 13:36     ` Michael Kerrisk (man-pages)
2015-05-14 13:36       ` Michael Kerrisk (man-pages)
     [not found]     ` <1431527892-2996-2-git-send-email-miso-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2016-05-11 11:07       ` Peter Zijlstra [this message]
2016-05-11 11:07         ` Peter Zijlstra
2016-05-11 11:07         ` Peter Zijlstra
2016-05-11 11:18         ` Peter Zijlstra
2016-05-11 11:18           ` Peter Zijlstra
     [not found]         ` <57331275.9000805-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>
2016-05-11 11:32           ` Michal Hocko
2016-05-11 11:32             ` Michal Hocko
2016-05-11 11:32             ` Michal Hocko
2015-05-13 14:38 ` [PATCH 2/2] mmap2: clarify MAP_POPULATE Michal Hocko
2015-05-13 14:38   ` Michal Hocko
     [not found]   ` <1431527892-2996-3-git-send-email-miso-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org>
2015-05-13 14:47     ` Eric B Munson
2015-05-13 14:47       ` Eric B Munson
2015-05-14 13:36   ` Michael Kerrisk (man-pages)
2015-05-14 13:36     ` Michael Kerrisk (man-pages)
2015-05-15  0:13   ` David Rientjes
2015-05-15  0:13     ` David Rientjes
2015-05-18  9:12 ` [PATCH 0/2] man-pages: clarify MAP_LOCKED semantic Michal Hocko
2015-05-18  9:12   ` Michal Hocko
2015-05-18  9:12   ` Michal Hocko

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=57331275.9000805@infradead.org \
    --to=peterz-wegcikhe2lqwvfeawa7xhq@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org \
    --cc=mhocko-AlSwsSmVLrQ@public.gmane.org \
    --cc=miso-2MMpYkNvuYDjFM9bn6wA6Q@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=rientjes-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=torvalds-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    /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.