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
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=273250
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 */ #define MAP_FIXED 0x0010 /* map addr must be exactly as requested */
#if __BSD_VISIBLE #if __BSD_VISIBLE
#define MAP_RENAME 0x0020 /* Sun: rename private pages to file */ #define MAP_RESERVED0020 0x0020 /* previously unimplemented MAP_RENAME */
#define MAP_NORESERVE 0x0040 /* Sun: don't reserve needed swap area */ #define MAP_RESERVED0040 0x0040 /* previously unimplemented MAP_NORESERVE */
#define MAP_RESERVED0080 0x0080 /* previously misimplemented MAP_INHERIT */ #define MAP_RESERVED0080 0x0080 /* previously misimplemented MAP_INHERIT */
#define MAP_RESERVED0100 0x0100 /* previously unimplemented MAP_NOEXTEND */ #define MAP_RESERVED0100 0x0100 /* previously unimplemented MAP_NOEXTEND */
#define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */ #define MAP_HASSEMAPHORE 0x0200 /* region may contain semaphores */

View File

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

View File

@ -219,6 +219,12 @@ sys_mmap(td, uap)
fp = NULL; 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. * Enforce the constraints.
* Mapping of length 0 is only allowed for old binaries. * Mapping of length 0 is only allowed for old binaries.
@ -244,9 +250,9 @@ sys_mmap(td, uap)
flags |= MAP_ANON; flags |= MAP_ANON;
pos = 0; pos = 0;
} }
if ((flags & ~(MAP_SHARED | MAP_PRIVATE | MAP_FIXED | MAP_RENAME | if ((flags & ~(MAP_SHARED | MAP_PRIVATE | MAP_FIXED | MAP_HASSEMAPHORE |
MAP_NORESERVE | MAP_HASSEMAPHORE | MAP_STACK | MAP_NOSYNC | MAP_STACK | MAP_NOSYNC | MAP_ANON | MAP_EXCL | MAP_NOCORE |
MAP_ANON | MAP_EXCL | MAP_NOCORE | MAP_PREFAULT_READ | MAP_PREFAULT_READ |
#ifdef MAP_32BIT #ifdef MAP_32BIT
MAP_32BIT | MAP_32BIT |
#endif #endif

View File

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