Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Jul 2017 20:26:41 +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: r321173 - head/sys/vm
Message-ID:  <201707182026.v6IKQfJj032155@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Tue Jul 18 20:26:41 2017
New Revision: 321173
URL: https://svnweb.freebsd.org/changeset/base/321173

Log:
  Convert assertion that only vmspace owner grows the stack, into a
  check blocking grow from other processes accesses.
  
  Debugger may access stack grow area with ptrace(2).  In this case,
  real state of the process is to not have the stack grown, which
  provides more accurate inspection.  Technical reason to avoid the grow
  is to avoid applying wrong process (debugger) stack limit.
  
  This change also has a consequence of making aio workers accesses past
  the bottom of stacks into EFAULT, arguably the situation is a
  programmers mistake.
  
  Reported by:	jhb
  Discussed with:	alc, jhb
  Sponsored by:	The FreeBSD Foundation
  MFC after:	3 days

Modified:
  head/sys/vm/vm_map.c

Modified: head/sys/vm/vm_map.c
==============================================================================
--- head/sys/vm/vm_map.c	Tue Jul 18 19:50:02 2017	(r321172)
+++ head/sys/vm/vm_map.c	Tue Jul 18 20:26:41 2017	(r321173)
@@ -3698,7 +3698,8 @@ vm_map_growstack(vm_map_t map, vm_offset_t addr, vm_ma
 
 	p = curproc;
 	vm = p->p_vmspace;
-	MPASS(map == &p->p_vmspace->vm_map);
+	if (map != &p->p_vmspace->vm_map)
+		return (KERN_FAILURE);
 	MPASS(!map->system_map);
 
 	guard = stack_guard_page * PAGE_SIZE;



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