Retire the unimplemented MAP_RENAME and MAP_NORESERVE flags to mmap(2).

Older binaries are still permitted to use these flags.

PR:		193961 (exp-run in ports)
Differential Revision:	https://reviews.freebsd.org/D848
Reviewed by:	kib
This commit is contained in:
John Baldwin 2014-10-18 12:28:51 +00:00
parent 5c0a54a380
commit 5817298f31
4 changed files with 15 additions and 8 deletions

View File

@ -69,8 +69,8 @@
#define MAP_FIXED 0x0010 /* map addr must be exactly as requested */
#if __BSD_VISIBLE
#define MAP_RENAME 0x0020 /* Sun: rename private pages to file */
#define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */
#define MAP_RESERVED0020 0x0020 /* previously unimplemented MAP_RENAME */
#define MAP_RESERVED0040 0x0040 /* previously unimplemented MAP_NORESERVE */
#define MAP_RESERVED0080 0x0080 /* previously misimplemented MAP_INHERIT */
#define MAP_RESERVED0100 0x0100 /* previously unimplemented MAP_NOEXTEND */
#define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */

View File

@ -58,7 +58,7 @@
* in the range 5 to 9.
*/
#undef __FreeBSD_version
#define __FreeBSD_version 1100038 /* Master, propagated to newvers */
#define __FreeBSD_version 1100039 /* Master, propagated to newvers */
/*
* __FreeBSD_kernel__ indicates that this system uses the kernel of FreeBSD,
@ -81,6 +81,7 @@
#define P_OSREL_SIGSEGV 700004
#define P_OSREL_MAP_ANON 800104
#define P_OSREL_MAP_FSTRICT 1100036
#define P_OSREL_MAP_RENAME 1100039
#define P_OSREL_MAJOR(x) ((x) / 100000)
#endif

View File

@ -219,6 +219,12 @@ sys_mmap(td, uap)
fp = NULL;
/*
* Ignore old flags that used to be defined but did not do anything.
*/
if (td->td_proc->p_osrel < P_OSREL_MAP_RENAME)
flags &= ~(MAP_RESERVED0020 | MAP_RESERVED0040);
/*
* Enforce the constraints.
* Mapping of length 0 is only allowed for old binaries.
@ -244,9 +250,9 @@ sys_mmap(td, uap)
flags |= MAP_ANON;
pos = 0;
}
if ((flags & ~(MAP_SHARED | MAP_PRIVATE | MAP_FIXED | MAP_RENAME |
MAP_NORESERVE | MAP_HASSEMAPHORE | MAP_STACK | MAP_NOSYNC |
MAP_ANON | MAP_EXCL | MAP_NOCORE | MAP_PREFAULT_READ |
if ((flags & ~(MAP_SHARED | MAP_PRIVATE | MAP_FIXED | MAP_HASSEMAPHORE |
MAP_STACK | MAP_NOSYNC | MAP_ANON | MAP_EXCL | MAP_NOCORE |
MAP_PREFAULT_READ |
#ifdef MAP_32BIT
MAP_32BIT |
#endif

View File

@ -312,8 +312,8 @@ static struct xlat poll_flags[] = {
};
static struct xlat mmap_flags[] = {
X(MAP_SHARED) X(MAP_PRIVATE) X(MAP_FIXED) X(MAP_RENAME)
X(MAP_NORESERVE) X(MAP_RESERVED0080) X(MAP_RESERVED0100)
X(MAP_SHARED) X(MAP_PRIVATE) X(MAP_FIXED) X(MAP_RESERVED0020)
X(MAP_RESERVED0040) X(MAP_RESERVED0080) X(MAP_RESERVED0100)
X(MAP_HASSEMAPHORE) X(MAP_STACK) X(MAP_NOSYNC) X(MAP_ANON)
X(MAP_NOCORE) X(MAP_PREFAULT_READ)
#ifdef MAP_32BIT