aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2014-06-19 05:00:39 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2014-06-19 05:00:39 +0000
commit11c42bcc5406b33b6d4dbb81a097bf9ab8860f60 (patch)
treeb847ae6506c709809c1cbb861579f0167b5fcee8 /sys/vm/vm_mmap.c
parent8efb41982974cce520d3ad1f19a1f7460abd46f6 (diff)
downloadsrc-11c42bcc5406b33b6d4dbb81a097bf9ab8860f60.tar.gz
src-11c42bcc5406b33b6d4dbb81a097bf9ab8860f60.zip
Add MAP_EXCL flag for mmap(2). It should be combined with MAP_FIXED,
and prevents the request from deleting existing mappings in the region, failing instead. Reviewed by: alc Discussed with: jhb Tested by: markj, pho (previous version, as part of the bigger patch) Sponsored by: The FreeBSD Foundation MFC after: 1 week
Notes
Notes: svn path=/head/; revision=267630
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r--sys/vm/vm_mmap.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 0fc5bb409a9a..a5248399ab9a 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -245,6 +245,8 @@ sys_mmap(td, uap)
flags |= MAP_ANON;
pos = 0;
}
+ if ((flags & (MAP_EXCL | MAP_FIXED)) == MAP_EXCL)
+ return (EINVAL);
/*
* Align the file position to a page boundary,
@@ -1626,6 +1628,8 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
return (EINVAL);
docow |= MAP_STACK_GROWS_DOWN;
}
+ if ((flags & MAP_EXCL) != 0)
+ docow |= MAP_CHECK_EXCL;
if (fitit) {
if ((flags & MAP_ALIGNMENT_MASK) == MAP_ALIGNED_SUPER)