svn commit: r320344 - head/sys/vm

Konstantin Belousov kib at FreeBSD.org
Sun Jun 25 23:16:38 UTC 2017


Author: kib
Date: Sun Jun 25 23:16:37 2017
New Revision: 320344
URL: https://svnweb.freebsd.org/changeset/base/320344

Log:
  For now, allow mprotect(2) over the guards to succeed regardless of
  the requested protection.
  
  The syscall returns success without changing the protection of the
  guard.  This is consistent with the current mprotect(2) behaviour on
  the unmapped ranges.  More important, the calls performed by libc and
  libthr to allow execution of stacks, if requested by the loaded ELF
  objects, do the expected change instead of failing on the grow space
  guard.
  
  Reviewed by:	alc, markj
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/vm/vm_map.c

Modified: head/sys/vm/vm_map.c
==============================================================================
--- head/sys/vm/vm_map.c	Sun Jun 25 22:39:28 2017	(r320343)
+++ head/sys/vm/vm_map.c	Sun Jun 25 23:16:37 2017	(r320344)
@@ -2003,6 +2003,8 @@ vm_map_protect(vm_map_t map, vm_offset_t start, vm_off
 	 */
 	for (current = entry; current != &map->header && current->start < end;
 	    current = current->next) {
+		if ((current->eflags & MAP_ENTRY_GUARD) != 0)
+			continue;
 		if (current->eflags & MAP_ENTRY_IS_SUB_MAP) {
 			vm_map_unlock(map);
 			return (KERN_INVALID_ARGUMENT);


More information about the svn-src-head mailing list