archive mirror
 help / color / mirror / Atom feed
From: "Kirill A. Shutemov" <>
To: Brian Geffon <>
Cc: Andrew Morton <>,
	"Michael S . Tsirkin" <>,
	Arnd Bergmann <>,,,, Andy Lutomirski <>,
	Will Deacon <>,
	Andrea Arcangeli <>,
	Sonny Rao <>, Minchan Kim <>,
	Joel Fernandes <>,
	Yu Zhao <>, Jesse Barnes <>,
	Florian Weimer <>,,,
	Lokesh Gidra <>
Subject: Re: [PATCH v7 1/2] mm: Add MREMAP_DONTUNMAP to mremap().
Date: Mon, 24 Feb 2020 11:16:22 +0300	[thread overview]
Message-ID: <20200224081622.f4oy2pqk6aq6krfp@box> (raw)
In-Reply-To: <>

On Fri, Feb 21, 2020 at 09:42:46AM -0800, Brian Geffon wrote:
> When remapping an anonymous, private mapping, if MREMAP_DONTUNMAP is
> set, the source mapping will not be removed. The remap operation
> will be performed as it would have been normally by moving over the
> page tables to the new mapping. The old vma will have any locked
> flags cleared, have no pagetables, and any userfaultfds that were
> watching that range will continue watching it.
> For a mapping that is shared or not anonymous, MREMAP_DONTUNMAP will cause
> the mremap() call to fail. Because MREMAP_DONTUNMAP always results in moving
> a VMA you MUST use the MREMAP_MAYMOVE flag, it's not possible to resize
> a VMA while also moving with MREMAP_DONTUNMAP so old_len must always
> be equal to the new_len otherwise it will return -EINVAL.
> We hope to use this in Chrome OS where with userfaultfd we could write
> an anonymous mapping to disk without having to STOP the process or worry
> about VMA permission changes.
> This feature also has a use case in Android, Lokesh Gidra has said
> that "As part of using userfaultfd for GC, We'll have to move the physical
> pages of the java heap to a separate location. For this purpose mremap
> will be used. Without the MREMAP_DONTUNMAP flag, when I mremap the java
> heap, its virtual mapping will be removed as well. Therefore, we'll
> require performing mmap immediately after. This is not only time consuming
> but also opens a time window where a native thread may call mmap and
> reserve the java heap's address range for its own usage. This flag
> solves the problem."
>   v6 -> v7:
>     - Don't allow resizing VMA as part of MREMAP_DONTUNMAP.
>       There is no clear use case at the moment and it can be added
>       later as it simplifies the implementation for now.
>   v5 -> v6:
>     - Code cleanup suggested by Kirill.
>   v4 -> v5:
>     - Correct commit message to more accurately reflect the behavior.
>     - Clear VM_LOCKED and VM_LOCKEDONFAULT on the old vma.
> Signed-off-by: Brian Geffon <>
> Reviewed-by: Minchan Kim <>
> Tested-by: Lokesh Gidra <>

Acked-by: Kirill A. Shutemov <>

 Kirill A. Shutemov

  parent reply	other threads:[~2020-02-24  8:15 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-21 17:42 [PATCH v7 1/2] mm: Add MREMAP_DONTUNMAP to mremap() Brian Geffon
2020-02-21 17:42 ` [PATCH v7 2/2] selftest: Add MREMAP_DONTUNMAP selftest Brian Geffon
2020-02-21 17:42 ` [PATCH v7] mremap.2: Add information for MREMAP_DONTUNMAP Brian Geffon
2020-02-25 13:51   ` Vlastimil Babka
2020-02-25 17:48     ` Brian Geffon
2020-04-15  6:40   ` Michael Kerrisk (man-pages)
2020-04-15 15:24     ` Brian Geffon
2020-02-24  8:16 ` Kirill A. Shutemov [this message]
2020-02-25 13:48 ` [PATCH v7 1/2] mm: Add MREMAP_DONTUNMAP to mremap() Vlastimil Babka

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:

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

  git send-email \
    --in-reply-to=20200224081622.f4oy2pqk6aq6krfp@box \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

* 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).