Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jun 2017 23:16:37 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r320344 - head/sys/vm
Message-ID:  <201706252316.v5PNGb51068277@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201706252316.v5PNGb51068277>