Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 Nov 2010 04:40:27 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r215369 - stable/8/sys/vm
Message-ID:  <201011160440.oAG4eRr9039533@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: alc
Date: Tue Nov 16 04:40:27 2010
New Revision: 215369
URL: http://svn.freebsd.org/changeset/base/215369

Log:
  MFC r214953
    In case the stack size reaches its limit and its growth must be
    restricted, ensure that grow_amount is a multiple of the page size.
    Otherwise, the kernel may crash in swap_reserve_by_uid() on HEAD and
    FreeBSD 8.x, and produce a core file with a missing stack on FreeBSD
    7.x.

Modified:
  stable/8/sys/vm/vm_map.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/vm/vm_map.c
==============================================================================
--- stable/8/sys/vm/vm_map.c	Tue Nov 16 04:40:03 2010	(r215368)
+++ stable/8/sys/vm/vm_map.c	Tue Nov 16 04:40:27 2010	(r215369)
@@ -3343,7 +3343,8 @@ Retry:
 	if (grow_amount > stack_entry->avail_ssize)
 		grow_amount = stack_entry->avail_ssize;
 	if (is_procstack && (ctob(vm->vm_ssize) + grow_amount > stacklim)) {
-		grow_amount = stacklim - ctob(vm->vm_ssize);
+		grow_amount = trunc_page((vm_size_t)stacklim) -
+		    ctob(vm->vm_ssize);
 	}
 
 	/* If we would blow our VMEM resource limit, no go */



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