freebsd-src/sys
Konstantin Belousov 6a97a3f756 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
2017-06-28 04:02:36 +00:00
..
amd64 Translate between abridged and full x87 tags for compat32 2017-06-24 11:38:31 +00:00
arm [arm] Use correct index value when checking range validity 2017-06-26 21:45:33 +00:00
arm64 Add parentheses missed in r320388 2017-06-27 16:30:01 +00:00
boot loader.efi: Disable smbios for arm 2017-06-24 09:33:25 +00:00
bsm
cam Fix a panic in camperiphfree(). 2017-06-27 19:26:02 +00:00
cddl zfs: port vdev_file part of illumos change 3306 2017-06-26 09:10:09 +00:00
compat Update comments and simplify conditionals for compat32 2017-06-27 01:29:10 +00:00
conf Implement parts of the hrtimer API in the LinuxKPI. 2017-06-26 16:28:46 +00:00
contrib Avoid including list.h in LinuxKPI headers. 2017-06-18 16:43:57 +00:00
crypto
ddb
dev cxgbe/t4_tom: Do not include space taken by the TCP timestamp option in 2017-06-27 22:05:06 +00:00
fs Fix LINT, broken by a -Wformat warning in r320329 with PFS_DELEN being 2017-06-27 17:01:46 +00:00
gdb
geom With r318394 seems it breaks gpart(8) in some embedded systems such like PCEngines, 2017-06-27 01:22:27 +00:00
gnu Update the GNU DTS file from Linux 4.11 2017-06-20 03:13:49 +00:00
i386 Fix indent. 2017-06-24 10:19:06 +00:00
isa
kern Do not ignore an error from vm_mmap_object(). 2017-06-27 20:12:13 +00:00
kgssapi
libkern arm64: add ".arch armv8-a+crc" to allow use of crc instructions 2017-06-08 20:06:09 +00:00
mips Add IPSEC support to mips ERL kernel config file 2017-06-26 18:28:00 +00:00
modules Sort SRCS. 2017-06-26 21:14:33 +00:00
net Update comments and simplify conditionals for compat32 2017-06-27 01:29:10 +00:00
net80211 net80211: initialize i_seq for A-MPDU frames. 2017-06-01 20:46:43 +00:00
netgraph Check return value from soaccept(). 2017-06-14 16:13:20 +00:00
netinet Handle sctp_get_next_param() in a consistent way. 2017-06-23 21:01:57 +00:00
netinet6 Fix an unnecessary/incorrect check in the PKTOPT_EXTHDRCPY macro. 2017-05-30 14:50:28 +00:00
netipsec Build kdebug_secreplay() function only when IPSEC_DEBUG is defined. 2017-06-01 10:04:12 +00:00
netpfil
netsmb
nfs
nfsclient
nfsserver
nlm
ofed Avoid including list.h in LinuxKPI headers. 2017-06-18 16:43:57 +00:00
opencrypto
powerpc Disable interrupts when updating the TLB 2017-06-27 01:57:22 +00:00
riscv Undefine temporary macro. 2017-06-17 07:36:46 +00:00
rpc Listening sockets improvements. 2017-06-08 21:30:34 +00:00
security Correct bitwise test in mac_bsdextended ugidfw_rule_valid() 2017-06-13 01:17:58 +00:00
sparc64 Move struct syscall_args syscall arguments parameters container into 2017-06-12 21:03:23 +00:00
sys Solve the y2038 problem for powerpc 2017-06-26 02:25:19 +00:00
teken
tests
tools make.conf: Add the possibility to use another DTC 2017-06-17 23:34:53 +00:00
ufs Mitigate several problems with the softdep_request_cleanup() on busy 2017-06-03 16:18:50 +00:00
vm Treat the addr argument for mmap(2) request without MAP_FIXED flag as 2017-06-28 04:02:36 +00:00
x86 Fix batched unload for DMAR busdma in qi mode. 2017-06-19 21:48:52 +00:00
xdr * limit size of buffers to RPC_MAXDATASIZE 2017-06-01 06:12:25 +00:00
xen
Makefile