[PATCH 1/3] man/mmap.2: don't unmap the overlapping VMA(s)
From: Piotr Kwapulinski
Date: Sat Apr 02 2016 - 15:18:23 EST
mmap.2 man page update for MAP_DONTUNMAP flag of mmap.
Signed-off-by: Piotr Kwapulinski <kwapulinski.piotr@xxxxxxxxx>
---
It should be considered to be merged only in case the patch
"[PATCH 0/3] mm/mmap.c: don't unmap the overlapping VMA(s)"
is merged.
---
man2/mmap.2 | 32 ++++++++++++++++++++++++++++++--
1 file changed, 30 insertions(+), 2 deletions(-)
diff --git a/man2/mmap.2 b/man2/mmap.2
index 0f2f277..0fc5879 100644
--- a/man2/mmap.2
+++ b/man2/mmap.2
@@ -37,7 +37,7 @@
.\" 2007-07-10, mtk, Added an example program.
.\" 2008-11-18, mtk, document MAP_STACK
.\"
-.TH MMAP 2 2016-03-15 "Linux" "Linux Programmer's Manual"
+.TH MMAP 2 2016-04-02 "Linux" "Linux Programmer's Manual"
.SH NAME
mmap, munmap \- map or unmap files or devices into memory
.SH SYNOPSIS
@@ -213,7 +213,9 @@ If the memory region specified by
.I addr
and
.I len
-overlaps pages of any existing mapping(s), then the overlapped
+overlaps pages of any existing mapping(s) and
+.B MAP_DONTUNMAP
+is not set, then the overlapped
part of the existing mapping(s) will be discarded.
If the specified address cannot be used,
.BR mmap ()
@@ -221,6 +223,23 @@ will fail.
Because requiring a fixed address for a mapping is less portable,
the use of this option is discouraged.
.TP
+.BR MAP_DONTUNMAP " (since Linux 4.6)"
+If this flag and
+.B MAP_FIXED
+are set and the memory region specified by
+.I addr
+and
+.I length
+overlaps pages of any existing mapping(s), then the
+.BR mmap ()
+will fail with
+.BR ENOMEM .
+No existing mapping(s) will be
+discarded.
+
+Note: currently, this flag is not implemented in the glibc wrapper.
+Use the numerical hex value 40, if you want to use it.
+.TP
.B MAP_GROWSDOWN
Used for stacks.
Indicates to the kernel virtual memory system that the mapping
@@ -477,6 +496,15 @@ No memory is available.
.TP
.B ENOMEM
The process's maximum number of mappings would have been exceeded.
+Or, both the
+.B MAP_FIXED
+and
+.B MAP_DONTUNMAP
+flags are set and the memory region specified by
+.I addr
+and
+.I length
+overlaps pages of any existing mapping(s).
This error can also occur for
.BR munmap (2),
when unmapping a region in the middle of an existing mapping,
--
2.7.4