Date: Thu, 29 Jun 2017 09:10:53 -0500 From: Pedro Giffuni <pfg@FreeBSD.org> To: Shawn Webb <shawn.webb@hardenedbsd.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r320430 - head/sys/vm Message-ID: <da80dceb-fdf5-690a-8aa3-ab80b7e21bb3@FreeBSD.org> In-Reply-To: <20170629132333.pl6nk5bsw3fkevdx@mutt-hbsd> References: <201706280402.v5S42bQx089187@repo.freebsd.org> <20170628223238.v456h4t4huwbqt6f@mutt-hbsd> <20170629132333.pl6nk5bsw3fkevdx@mutt-hbsd>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello; On 6/29/2017 8:23 AM, Shawn Webb wrote: > On Wed, Jun 28, 2017 at 06:32:38PM -0400, Shawn Webb wrote: >> On Wed, Jun 28, 2017 at 04:02:37AM +0000, Konstantin Belousov wrote: >>> Author: kib >>> Date: Wed Jun 28 04:02:36 2017 >>> New Revision: 320430 >>> URL: https://svnweb.freebsd.org/changeset/base/320430 >>> >>> Log: >>> Treat the addr argument for mmap(2) request without MAP_FIXED flag as >>> a hint. >>> >>> Right now, for non-fixed mmap(2) calls, addr is de-facto interpreted >>> as the absolute minimal address of the range where the mapping is >>> created. The VA allocator only allocates in the range [addr, >>> VM_MAXUSER_ADDRESS]. This is too restrictive, the mmap(2) call might >>> unduly fail if there is no free addresses above addr but a lot of >>> usable space below it. >>> >>> Lift this implementation limitation by allocating VA in two passes. >>> First, try to allocate above addr, as before. If that fails, do the >>> second pass with less restrictive constraints for the start of >>> allocation by specifying minimal allocation address at the max bss >>> end, if this limit is less than addr. >>> >>> One important case where this change makes a difference is the >>> allocation of the stacks for new threads in libthr. Under some >>> configuration conditions, libthr tries to hint kernel to reuse the >>> main thread stack grow area for the new stacks. This cannot work by >>> design now after grow area is converted to stack, and there is no >>> unallocated VA above the main stack. Interpreting requested stack >>> base address as the hint provides compatibility with old libthr and >>> with (mis-)configured current libthr. >>> >>> Reviewed by: alc >>> Tested by: dim (previous version) >>> Sponsored by: The FreeBSD Foundation >>> MFC after: 1 week >>> >>> Modified: >>> head/sys/vm/vm_map.c >>> head/sys/vm/vm_map.h >>> head/sys/vm/vm_mmap.c >> Hey Kostik, >> >> This commit breaks both xorg and shutting down/rebooting. Reverting this >> commit makes my laptop happy again. > Thnking out loud: would these issues arise due to HardenedBSD using > SafeStack, which relies on libthr's stack code? I haven't been looking at SafeStack lately but unless HardenedBSD took the FreeBSD-specific code from EPFL and did some real work on it, there is little chance it does its work well. Pedro. ps. I would guess Oliver knows about the EPFL code since he did some review on github.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?da80dceb-fdf5-690a-8aa3-ab80b7e21bb3>