]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
5 years agoMerge ^/head r340126 through r340212.
dim [Wed, 7 Nov 2018 18:52:28 +0000 (18:52 +0000)]
Merge ^/head r340126 through r340212.

5 years agoSometimes the complete split packet may be queued too early and the
hselasky [Wed, 7 Nov 2018 08:25:44 +0000 (08:25 +0000)]
Sometimes the complete split packet may be queued too early and the
transaction translator will return a NAK. Ignore this message and
retry the complete split instead.

MFC after: 3 days
Sponsored by: Mellanox Technologies

5 years agoComestic change to try to inline the memset with SSE/AVX instructions.
araujo [Wed, 7 Nov 2018 06:29:01 +0000 (06:29 +0000)]
Comestic change to try to inline the memset with SSE/AVX instructions.
Also switch from int to size_t to keep portability.

Reviewed by: brooks
Sponsored by: iXsystems Inc.
Differential Revision: https://reviews.freebsd.org/D17795

5 years agoRevert my bogus attempt to silence coverity on r340045, it created
araujo [Wed, 7 Nov 2018 04:20:29 +0000 (04:20 +0000)]
Revert my bogus attempt to silence coverity on r340045, it created
more bad side effects than good.

PR: 233038
Submitted by: We Maag <jwmaag@gmail.com>

5 years agopowerpc/atomic: Loosen the memory barrier on atomic_load_acq_*()
jhibbits [Wed, 7 Nov 2018 01:42:00 +0000 (01:42 +0000)]
powerpc/atomic: Loosen the memory barrier on atomic_load_acq_*()

'sync' is pretty heavy-handed, and is unnecessary for this use case.  It's a
full barrier, which is applicable for all storage types.  However,
atomic_load_acq_*() is only expected to operate on physical memory, not
device memory, so lwsync is sufficient (lwsync provides access ordering on
memory that is marked as Coherency Required and is not Write Through nor
Cache Inhibited).  On 32-bit systems, this is a nop, since powerpc_lwsync()
is defined to use sync, as a workaround for a silicon bug in the Freescale
e500 core.

5 years agoAvoid fixing the tty_info() buffer size in tty.h.
markj [Tue, 6 Nov 2018 23:41:44 +0000 (23:41 +0000)]
Avoid fixing the tty_info() buffer size in tty.h.

Different compilation units may otherwise get a different view of the
layout of struct tty depending on whether they include opt_printf.h.
This caused a blowup in the number of types defined in the kernel's
CTF file after r339468; thanks to dim@ for bisecting down to that
revision.

PR: 232675
Reported by: dim
Reviewed by: cem (previous version)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17877

5 years agoChange nfs_advlock() so that the NFSVOPUNLOCK() is mostly done at the end.
rmacklem [Tue, 6 Nov 2018 22:50:50 +0000 (22:50 +0000)]
Change nfs_advlock() so that the NFSVOPUNLOCK() is mostly done at the end.

Prior to this patch, nfs_advlock() did NFSVOPUNLOCK(); return (error);
in many places. This patch replaces these code sequenences with a "goto out;"
and does the NFSVOPUNLOCK(); return (error); at the end of the function
in order to make the vnode locking simpler.
This patch does not change the semantics of nfs_advlock().

Suggested by: kib
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D17853

5 years agoTreat the memory lengths for CHELSIO_T4_GET_MEM as unsigned.
jhb [Tue, 6 Nov 2018 22:33:36 +0000 (22:33 +0000)]
Treat the memory lengths for CHELSIO_T4_GET_MEM as unsigned.

Previously attempts to read the MC region were failing since the
length was greater than 2^31.

Reviewed by: np
MFC after: 2 months
Differential Revision: https://reviews.freebsd.org/D17857

5 years agoAvoid specifying VM_PROT_EXECUTE in mappings from pipe_map and exec_map.
markj [Tue, 6 Nov 2018 21:57:03 +0000 (21:57 +0000)]
Avoid specifying VM_PROT_EXECUTE in mappings from pipe_map and exec_map.

These submaps are used for mapping pipe buffers and execv() argument
strings respectively, so there's no need for such mappings to have
execute permissions.

Reported by: jhb
Reviewed by: alc, jhb, kib
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17827

5 years agoCleanup locale tools:
yuripv [Tue, 6 Nov 2018 21:49:50 +0000 (21:49 +0000)]
Cleanup locale tools:

- Simplify the source dir specification, and update README
  appropriately
- Drop the LC (doonly) processing, it's broken, and even if fixed, not
  really useful
- Don't remove the target directories while installing new data as it
  removes Makefile.depend which we don't manage; only rm the files we
  are going to add/replace/delete instead
- Restrict adding bsd.endian.mk to colldef and ctypedef Makefiles, it's
  not needed in other (text-only) categories
- GC unused scripts; they don't seem to be particularly helpful standalone
  as well

Reviewed by: bapt
Approved by: kib (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D17858

5 years agoWe need opt_stack.h after r339605.
markj [Tue, 6 Nov 2018 21:47:22 +0000 (21:47 +0000)]
We need opt_stack.h after r339605.

Reviewed by: cem
Sponsored by: The FreeBSD Foundation

5 years agoUpdate some comments made obsolete by recent commits.
brooks [Tue, 6 Nov 2018 20:45:15 +0000 (20:45 +0000)]
Update some comments made obsolete by recent commits.

5 years agoRegen after r340199: Use declared types for caddr_t arguments.
brooks [Tue, 6 Nov 2018 18:47:29 +0000 (18:47 +0000)]
Regen after r340199: Use declared types for caddr_t arguments.

Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D17852

5 years agoUse declared types for caddr_t arguments.
brooks [Tue, 6 Nov 2018 18:46:38 +0000 (18:46 +0000)]
Use declared types for caddr_t arguments.

Leave ptrace(2) alone for the moment as it's defined to take a caddr_t.

Reviewed by: kib
Obtained from: CheriBSD
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D17852

5 years agoRemove ppoll. freebsd32 doesn't define a ppoll syscall.
oshogbo [Tue, 6 Nov 2018 18:26:40 +0000 (18:26 +0000)]
Remove ppoll. freebsd32 doesn't define a ppoll syscall.

Reported by: jhb

5 years agoRegenerate after r340195.
oshogbo [Tue, 6 Nov 2018 18:06:52 +0000 (18:06 +0000)]
Regenerate after r340195.

5 years agoTurn off BUILD_WITH_STRICT_TMPPATH by default
arichardson [Tue, 6 Nov 2018 18:06:52 +0000 (18:06 +0000)]
Turn off BUILD_WITH_STRICT_TMPPATH by default

Building with a strict $PATH (without inheriting from the parent
environment) still causes build failures in some workflows/environemnts
that I have not yet tested.
I will try to bring this back once these issues have all been resolved
since it is actually extremely useful in tracking broken dependencies
and wrong assumptions about the build environemt.

Discussed With: brooks

5 years agocapsicum: Add ppoll and freebsd32_ppoll to compat32.
oshogbo [Tue, 6 Nov 2018 18:05:46 +0000 (18:05 +0000)]
capsicum: Add ppoll and freebsd32_ppoll to compat32.

PR: 232495
Pointed out by: brooks
MFC after: 2 weeks

5 years agoRegenerate after r340129.
oshogbo [Tue, 6 Nov 2018 18:03:04 +0000 (18:03 +0000)]
Regenerate after r340129.

Pointed out by: brooks

5 years agoAdd the KUBSAN options to the arm64 and amd64 GENERIC kernel config files.
andrew [Tue, 6 Nov 2018 17:47:58 +0000 (17:47 +0000)]
Add the KUBSAN options to the arm64 and amd64 GENERIC kernel config files.
As the kernel file size may be too large to run with a stock loader comment
them out for now.

Sponsored by: DARPA, AFRL

5 years agoUse plain atomic_{add,subtract} when that's sufficient.
markj [Tue, 6 Nov 2018 17:32:25 +0000 (17:32 +0000)]
Use plain atomic_{add,subtract} when that's sufficient.

CID: 1386920
MFC after: 2 weeks

5 years agoPort the NetBSD ubsan runtime to the FreeBSD kernel.
andrew [Tue, 6 Nov 2018 17:32:07 +0000 (17:32 +0000)]
Port the NetBSD ubsan runtime to the FreeBSD kernel.

This allows us to build the ubsan code added in r340189 into the kernel
with the KUBSAN option. This will report when undefined behaviour is
detected in the currently running kernel.

As it can be large, the kernel is 65MB on arm64, loader may not be able to
load the kernel on all architectures so is disabled by default for now.

Sponsored by: DARPA, AFRL

5 years agoImport the NetBSD micro ubsan code for the kernel.
andrew [Tue, 6 Nov 2018 16:56:49 +0000 (16:56 +0000)]
Import the NetBSD micro ubsan code for the kernel.

This imports revision 1.3 of common/lib/libc/misc/ubsan.c from NetBSD, the
micro-ubsan code. It is an implementation of the Undefined Behavior
Sanitizer runtime for use with recent clang and gcc.

The uubsan code will be used in a later commit to implement kubsan to help
find undefined behavior in the kernel.

Sponsored by: DARPA, AFRL

5 years agoRegen src.conf.5 after r340186
emaste [Tue, 6 Nov 2018 15:57:17 +0000 (15:57 +0000)]
Regen src.conf.5 after r340186

5 years agoDon't allow BIO_READ, BIO_WRITE or BIO_DELETE requests that are
sobomax [Tue, 6 Nov 2018 15:55:41 +0000 (15:55 +0000)]
Don't allow BIO_READ, BIO_WRITE or BIO_DELETE requests that are
fully beyond the end of providers media. The only exception is made
for the zero length transfers which are allowed to be just on the
boundary. Previously, any requests starting on the boundary (i.e. next
byte after the last one) have been allowed to go through.

No response from: freebsd-geom@, phk
MFC after: 1 month

5 years agoAdd a WITH_BIND_NOW build knob
emaste [Tue, 6 Nov 2018 15:52:49 +0000 (15:52 +0000)]
Add a WITH_BIND_NOW build knob

The linker's -z now flag sets the DF_BIND_NOW flag, which signals to the
runtime loader that all relocation processing should be performed at
process startup rather than on demand.  In combination with lld's
default of enabling relro this causes the GOT to be made read-only when
the process starts, preventing straightforward GOT overwrite attacks.

Shawn Webb discovered a failure on HardenedBSD with BIND_NOW and ifunc
use, which resulted in my rtld fix in r340137.  Add a BIND_NOW knob as
it is trivial to do so and is a useful ELF hardening feature.  This
change is equivalent to HardenedBSD's but not identical as there are
other diffs/conflicts nearby.

Note that our ELF Tool Chain readelf does not currently decode the
DF_BIND_NOW flag - see PR232983.

Reviewed by: brooks
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D17846

5 years agoFix builds with COMPAT_LINUX32 in the kernel config.
tijl [Tue, 6 Nov 2018 15:29:44 +0000 (15:29 +0000)]
Fix builds with COMPAT_LINUX32 in the kernel config.

MFC after: 3 days

5 years agoOn amd64 both Linux compat modules, linux.ko and linux64.ko, provide
tijl [Tue, 6 Nov 2018 13:51:08 +0000 (13:51 +0000)]
On amd64 both Linux compat modules, linux.ko and linux64.ko, provide
linux_ioctl_(un)register_handler that allows other driver modules to
register ioctl handlers.  The ioctl syscall implementation in each Linux
compat module iterates over the list of handlers and forwards the call to
the appropriate driver.  Because the registration functions have the same
name in each module it is not possible for a driver to support both 32 and
64 bit linux compatibility.

Move the list of ioctl handlers to linux_common.ko so it is shared by
both Linux modules and all drivers receive both 32 and 64 bit ioctl calls
with one registration.  These ioctl handlers normally forward the call
to the FreeBSD ioctl handler which can handle both 32 and 64 bit.

Keep the special COMPAT_LINUX32 ioctl handlers in linux.ko in a separate
list for now and let the ioctl syscall iterate over that list first.
Later, COMPAT_LINUX32 support can be added to the 64 bit ioctl handlers
via a runtime check for ILP32 like is done for COMPAT_FREEBSD32 and then
this separate list would disappear again.  That is a much bigger effort
however and this commit is meant to be MFCable.

This enables linux64 support in x11/nvidia-driver*.

PR: 206711
Reviewed by: kib
MFC after: 3 days

5 years agoDon't use a function when neither INET nor INET6 are defined.
tuexen [Tue, 6 Nov 2018 12:55:03 +0000 (12:55 +0000)]
Don't use a function when neither INET nor INET6 are defined.
This is a valid case for the userland stack, where this fixes
two set-but-not-used warnings in this case.

Thanks to Christian Wright for reporting the issue.

5 years agoPick 50b473c8839f5408df179bdf6f2b3fd2cf5c3b2f from upstream:
trasz [Tue, 6 Nov 2018 12:05:46 +0000 (12:05 +0000)]
Pick 50b473c8839f5408df179bdf6f2b3fd2cf5c3b2f from upstream:

    Set commit properly for FreeBSD w/ overcommit.

    When overcommit is enabled, commit needs to be set when doing mmap().  The
    regression was introduced in f80c97e.

This fixes 'retain:true'.

Discussed with: jasone
Obtained from: Qi Wang <interwq at gwu dot edu>
MFC after: 2 weeks
Sponsored by: DARPA, AFRL

5 years agoRemove btxld from symlinked host tools
arichardson [Tue, 6 Nov 2018 09:36:59 +0000 (09:36 +0000)]
Remove btxld from symlinked host tools

It is only present on amd64/i386 systems which breaks buildworld on
other hosts. In fact there is no need to add it to the bootstrap tools
list since it is already included in the cross-tools phase.
However, for cross-tools it was only built if the host and target
architecture didn't match. After this change it is also built when we
are builtin with a strict $PATH.

Reported By: mmel

5 years agoDo not print "ip6" keyword in print_icmp6types() for O_ICMP6TYPE opcode.
ae [Tue, 6 Nov 2018 07:41:32 +0000 (07:41 +0000)]
Do not print "ip6" keyword in print_icmp6types() for O_ICMP6TYPE opcode.

It produces incompatibility when rules listing is used again to
restore saved ruleset, because "ip6" keyword produces separate opcode.
The kernel already has the check and only IPv6 packets will be checked
for matching.

PR: 232939
MFC after: 3 days

5 years agoInitialize last_target in the laundry thread control loop.
markj [Tue, 6 Nov 2018 02:52:54 +0000 (02:52 +0000)]
Initialize last_target in the laundry thread control loop.

In practice it is always initialized because nfreed must be positive
in order to trigger background laundering, but this isn't obvious.

CID: 1387997
MFC after: 1 week

5 years agoAdd a facility for transmitting "raw" work requests on regular NIC queues.
jhb [Tue, 6 Nov 2018 00:11:36 +0000 (00:11 +0000)]
Add a facility for transmitting "raw" work requests on regular NIC queues.

- Use PH_loc.eight[1] as a general 'cflags' (Chelsio flags) field to
  describe properties of a queued packet.  The MC_RAW_WR flag
  indicates an mbuf holding a raw work request.  mbuf_cflags() returns
  the current flags.
- Raw work request mbufs are allocated via alloc_wr_mbuf() which will
  allocate a single contiguous range to hold the mbuf data.  The
  consumer can use mtod() to obtain the start of the work request and
  write the required work request in the buffer.  The mbuf can then be
  enqueued directly to the txq via mp_ring_enqueue().
- Since raw work requests might potentially send arbitrary work
  requests, only set the EQUIQ and EQUEQ bits on work requests that
  support them such as the normal tunneled Ethernet packet work
  requests.

Reviewed by: np
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D17811

5 years agoFix a couple indentation errors in r339958.
brooks [Tue, 6 Nov 2018 00:09:43 +0000 (00:09 +0000)]
Fix a couple indentation errors in r339958.

5 years agocapability.h: add comment about planned removal timeline
emaste [Tue, 6 Nov 2018 00:05:17 +0000 (00:05 +0000)]
capability.h: add comment about planned removal timeline

PR: 233007
MFC after: 1 week
Sponsored by: The FreeBSD Foundation

5 years agoAdd a custom implementation of cpu_lock_delay() for x86.
jhb [Mon, 5 Nov 2018 22:54:03 +0000 (22:54 +0000)]
Add a custom implementation of cpu_lock_delay() for x86.

Avoid using DELAY() since it can try to use spin locks on CPUs without
a P-state invariant TSC.  For cpu_lock_delay(), always use the TSC if
it exists (even if it is not P-state invariant) to delay for a
microsecond.  If the TSC does not exist, read from I/O port 0x84 to
delay instead.

PR: 228768
Reported by: Roger Hammerstein <cheeky.m@live.com>
Reviewed by: kib
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D17851

5 years agoelfdump: Add -E to test if a file is an ELF binary.
brooks [Mon, 5 Nov 2018 22:53:50 +0000 (22:53 +0000)]
elfdump: Add -E to test if a file is an ELF binary.

This is intended to replace potentially unreliable checks like:

file -b $1 | grep -q '^ELF ..-bit .SB executable'

Reviewed by: emaste
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D15971

5 years agoAdd a delay_tsc() static function for when DELAY() uses the TSC.
jhb [Mon, 5 Nov 2018 22:51:45 +0000 (22:51 +0000)]
Add a delay_tsc() static function for when DELAY() uses the TSC.

This uses slightly simpler logic than the existing code by using the
full 64-bit counter and thus not having to worry about counter
overflow.

Reviewed by: kib
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D17850

5 years agoKeep inheriting $PATH when using system linker/compiler
arichardson [Mon, 5 Nov 2018 22:51:44 +0000 (22:51 +0000)]
Keep inheriting $PATH when using system linker/compiler

I missed this case when testing r340157. For now just keep
$PATH when we aren't bootstrapping a compiler so that the build
can find cc/c++/ld without an absolute path.

Reported by: yuripv

5 years agorevert r340156, restoring sys/sys/capability.h
emaste [Mon, 5 Nov 2018 22:36:45 +0000 (22:36 +0000)]
revert r340156, restoring sys/sys/capability.h

More time is still needed for ports to accommodate the migration to
capsicum.h.

The header was renamed in 2014 due to concerns about conflicts with with
a draft POSIX.1e capability.h header on other systems and there is (now)
no need for complex autoconf tests for both capability.h and capsicum.h.
Any supported Capsicum-capable system has capsicum.h.

Reported by: antoine
Sponsored by: The FreeBSD Foundation

5 years agoAdd a KPI for the delay while spinning on a spin lock.
jhb [Mon, 5 Nov 2018 21:34:17 +0000 (21:34 +0000)]
Add a KPI for the delay while spinning on a spin lock.

Replace a call to DELAY(1) with a new cpu_lock_delay() KPI.  Currently
cpu_lock_delay() is defined to DELAY(1) on all platforms.  However,
platforms with a DELAY() implementation that uses spin locks should
implement a custom cpu_lock_delay() doesn't use locks.

Reviewed by: kib
MFC after: 3 days

5 years agoFix -DNO_CLEAN build after r340157
arichardson [Mon, 5 Nov 2018 21:30:00 +0000 (21:30 +0000)]
Fix -DNO_CLEAN build after r340157

Approved By: jhb (mentor)

5 years agoDocument the fact that cap_limit_set() always frees the input nvlist.
markj [Mon, 5 Nov 2018 21:01:45 +0000 (21:01 +0000)]
Document the fact that cap_limit_set() always frees the input nvlist.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation

5 years agoRework setting PTE_D for kernel mappings.
jhb [Mon, 5 Nov 2018 20:00:36 +0000 (20:00 +0000)]
Rework setting PTE_D for kernel mappings.

Rather than unconditionally setting PTE_D for all writeable kernel
mappings, set PTE_D for writable mappings of unmanaged pages (whether
user or kernel).  This matches what amd64 does and also matches what
the RISC-V spec suggests (preset the A and D bits on mappings where
the OS doesn't care about the state).

Suggested by: alc
Reviewed by: alc, markj
Sponsored by: DARPA

5 years agoBuild the elftoolchain libraries as part of bootstrap-tools
arichardson [Mon, 5 Nov 2018 19:51:16 +0000 (19:51 +0000)]
Build the elftoolchain libraries as part of bootstrap-tools

It is not necessary to build libelf and libdwarf this early. Furthermore,
when building on Linux/MacOS, m4 will only be built during the bootstrap
tools phase and not be available in $PATH before.

Reviewed By: emaste
Approved By: brooks (mentor)
Differential Revision: https://reviews.freebsd.org/D17800

5 years agoAllow building world without inheriting $PATH
arichardson [Mon, 5 Nov 2018 19:51:10 +0000 (19:51 +0000)]
Allow building world without inheriting $PATH

Inheriting $PATH during the build phase can cause the build to fail when
compiling on a different system due to missing build tools or incompatible
versions somewhere in $PATH. This has cause build failures for us before
due to the jenkins slaves still running FreeBSD 10.
Listing the tools we depend on explicitly instead of just using whatever
happens to be in $PATH allows us to check that we don't accidentally add a
new build dependency.

All tools that do no need to be bootstrapped will now be symlinked to
${WORLDTMP}/legacy/bin and during the build phase $PATH will only contain
${WORLDTMP}. There is also a new variable "BOOTSTRAP_ALL_TOOLS" which can
be set to force compiling almost all bootstrap tools instead of symlinking
them. This will not bootstrap tools such as cp,mv, etc. since they may be
used during the build and for those we should really only be using POSIX
compatible options.

Furthermore, this change is required in order to be able to build on
non-FreeBSD hosts. While the same binaries may exist on Linux/MacOS they
often accept different flags or produce incompatible output.

Approved By: brooks (mentor)
Differential Revision: https://reviews.freebsd.org/D16815

5 years agoRemove backwards-compatibility sys/capability.h
emaste [Mon, 5 Nov 2018 19:25:57 +0000 (19:25 +0000)]
Remove backwards-compatibility sys/capability.h

In r263232 sys/capability.h was renamed to sys/capsicum.h, to avoid
conflicts with a capability.h header found on other operating systems.

Sufficient time has now passed, so remove the old header at the
beginning of FreeBSD 13.

Discussed with: oshogbo
Sponsored by: The FreeBSD Foundation

5 years agoOnly assert locked for many async events.
imp [Mon, 5 Nov 2018 18:47:29 +0000 (18:47 +0000)]
Only assert locked for many async events.

Many async events that we see are called for this specific path. When
calling an async callback for a targetted device, XTP will lock that
specific device's path lock (same as what cam_periph_lock does). For
those AC_ events, assert we have the lock rather than trying to
recusrively take it (which causes panics since it's not recursive).

Add annotations about this and about the fact that AC_SCSI_AEN events
are generated now only in the ata stack (which cannot have a scsi_da
attachment). Leave it in place in case I've overlooked something as
the code is harmless.

This is fallout from my attempts to "fix" locking for softc->flags in
r330796 that's not been triggered often enough to get my attention
until now.

Sponsored by: Netflix
MFC After: 3 days
Differential Revision: https://reviews.freebsd.org/D17837

5 years agolualoader: Add chainload menu entry
kevans [Mon, 5 Nov 2018 16:20:07 +0000 (16:20 +0000)]
lualoader: Add chainload menu entry

MFC after: 4 days

5 years agoRegen src.conf.5 after r340150
emaste [Mon, 5 Nov 2018 15:30:13 +0000 (15:30 +0000)]
Regen src.conf.5 after r340150

5 years agoExpand WITH_LLD_BOOTSTRAP description
emaste [Mon, 5 Nov 2018 15:22:41 +0000 (15:22 +0000)]
Expand WITH_LLD_BOOTSTRAP description

Reported by: bz

5 years agohwpmc: limit wait for user callchain collection to 1 tick
mmacy [Mon, 5 Nov 2018 08:11:16 +0000 (08:11 +0000)]
hwpmc: limit wait for user callchain collection to 1 tick

The hwpmc pcpu sample buffer is prone to head of line blocking
when waiting for user process to return to user space and
collect a pending callchain. If more than one tick has elapsed
between the time the sample entry was marked for collection and
the time that the hardclock pmc handler runs to copy the records
to a larger temporary buffer, mark the sample entry as not in
use.

This changes reduces the number of samples marked as not valid
when collecting under load from ~99.5% to 5-20%.

Reported by: mjg@
MFC after: 3 days

5 years agopowerpc/SMP: Don't spam the console with AP bringup messages
jhibbits [Mon, 5 Nov 2018 01:53:20 +0000 (01:53 +0000)]
powerpc/SMP: Don't spam the console with AP bringup messages

Especially on new POWER9 systems, the console can be filled with

  SMP: AP CPU #XX launched

messages.  This can also slow down the console printing.  Instead, do what
x86 now does, as of r333335, and print it all on one line, unless
bootverbose is set.

5 years agoMove pmc* bits behind MK_PMC to fix WITHOUT_PMC build
kevans [Mon, 5 Nov 2018 00:20:58 +0000 (00:20 +0000)]
Move pmc* bits behind MK_PMC to fix WITHOUT_PMC build

No objection from: mmacy
MFC after: 3 days

5 years agoAdd hybrid C.UTF-8 locale being identical to default C locale except
yuripv [Sun, 4 Nov 2018 22:13:22 +0000 (22:13 +0000)]
Add hybrid C.UTF-8 locale being identical to default C locale except
that it uses the same ctype maps and functions as other UTF-8 locales.

Reviewed by: bapt, cem, eadler
Approved by: kib (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D17833

5 years agoping: simplify use of Casper
oshogbo [Sun, 4 Nov 2018 20:26:29 +0000 (20:26 +0000)]
ping: simplify use of Casper

There is no need to check if capdns is NULL.
If we will build the system without casper all cap_gethostaddr will be
replaced by the standard functions.

5 years agolibcasper: using explicit_bzero in cap_grp service
oshogbo [Sun, 4 Nov 2018 19:43:59 +0000 (19:43 +0000)]
libcasper: using explicit_bzero in cap_grp service

Please notice that we still don't clean information in nvlist structures.

Submitted by: David CARLIER <devnexen@gmail.com>
Differential Revision: https://reviews.freebsd.org/D16777

5 years agolibcasper: fix limitations in dns service
oshogbo [Sun, 4 Nov 2018 19:38:54 +0000 (19:38 +0000)]
libcasper: fix limitations in dns service

The getaddrinfo(3) and gethostbyname(3) are used to return the address for a
given hostname. The getnameinfo(3) and gethostbyaddr(3) are used to return
hostname for a given address. Right now in casper, we have two limitations:
- NAME which allows resolving DNS names.
- ADDR which allows to do revert DNS lookups.

Before this change the rights was mixed up:
NAME - getnameinfo(3) and gethostbyname(3)
ADDR - gethostbyaddr(3) and getaddrinfo(3)

Which no matters on limitation allowed us to resolve DNS names and do DNS
lookups basically by using a different set of functions.

Now the NAME type allows getaddrinfo(3) and gethostbyname (3)functions,
and the ADDR names allow to use gethostbyaddr(3) and getnameinfo(3) functions.

Reviewed by: pjd, bcr
MFC after: 3 weeks
Discussed with: hrs
Differential Revision: https://reviews.freebsd.org/D16930

5 years agolibcasper: Update example in man page to use cap_getnameinfo function.
oshogbo [Sun, 4 Nov 2018 19:31:44 +0000 (19:31 +0000)]
libcasper: Update example in man page to use cap_getnameinfo function.

Reviewed by: hrs
Differential Revision: https://reviews.freebsd.org/D16931

5 years agolibcasper: Document the cap_getaddrinfo and cap_getnameinfo functions
oshogbo [Sun, 4 Nov 2018 19:29:19 +0000 (19:29 +0000)]
libcasper: Document the cap_getaddrinfo and cap_getnameinfo functions

Reviewed by: hrs
Differential Revision: https://reviews.freebsd.org/D16929

5 years agocapsicum: use a new capsicum helpers in tools
oshogbo [Sun, 4 Nov 2018 19:24:49 +0000 (19:24 +0000)]
capsicum: use a new capsicum helpers in tools

Use caph_{rights,ioctls,fcntls}_limit to simplify the code.

5 years agortld: move relro enforcement after ifunc processing
emaste [Sun, 4 Nov 2018 19:21:12 +0000 (19:21 +0000)]
rtld: move relro enforcement after ifunc processing

Previously the combination of relro (implicit), -z now and ifunc use
resulted in a segfault when applying ifuncs after relro (test binary
here just calls amd64_get_fsbase()):

| % env LD_DEBUG=1 libexec/rtld-elf/obj/ld-elf.so.1 a.out
| ...
| enforcing main obj relro
| ...
| resolving ifuncs
| reloc_jmpslot: *0x203198 = 0x189368ea4570
| zsh: bus error (core dumped)  LD_DEBUG=1 obj/ld-elf.so.1 ~/a.out

Reported by: Shawn Webb
Reviewed by: kib
Sponsored by: The FreeBSD Foundation

5 years agoMove the fixed base for PIE loading on arm.
kib [Sun, 4 Nov 2018 19:11:32 +0000 (19:11 +0000)]
Move the fixed base for PIE loading on arm.

Existing base causes conflicts for direct execution of ld-elf.so.1
because default linking base for non-PIE binaries is 0x10000.

Reported and tested by: Mark Millard <marklmi26-fbsd@yahoo.com>
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

5 years agoMake ng_pptpgre(8) netgraph node be able to restore order for packets
eugen [Sun, 4 Nov 2018 19:10:44 +0000 (19:10 +0000)]
Make ng_pptpgre(8) netgraph node be able to restore order for packets
reordered in transit instead of dropping them altogether.
It uses sequence numbers of PPtPGRE packets.

A set of new sysctl(8) added to control this ability or disable it:

net.graph.pptpgre.reorder_max (1) defines maximum length of node's
private reorder queue used to keep data waiting for late packets.
Zero value disables reordering. Default value 1 allows the node to restore
the order for two packets swapped in transit. Greater values allow the node
to deliver packets being late after more packets in sequence
at cost of increased kernel memory usage.

net.graph.pptpgre.reorder_timeout (1) defines time value in miliseconds
used to wait for late packets. It may be useful to increase this
if reordering spot is distant.

MFC after: 1 month

5 years agoFix a recusive call introduce in the r340130.
oshogbo [Sun, 4 Nov 2018 18:52:59 +0000 (18:52 +0000)]
Fix a recusive call introduce in the r340130.

5 years agoUn-break build libexpact.
oshogbo [Sun, 4 Nov 2018 18:24:11 +0000 (18:24 +0000)]
Un-break build libexpact.

The writeRandomBytes_arc4random is not used if the arc4random_buf
is available. This caused compiler to throw warnings which are treated as
an error in libexpact.

Approved by: vangyzen

5 years agoDrop ed(1) "crypto"
cem [Sun, 4 Nov 2018 17:56:16 +0000 (17:56 +0000)]
Drop ed(1) "crypto"

You should not be using DES.  You should not have been using DES for the
past 30 years.

The ed DES-CBC scheme lacked several desirable properties of a sealed
document system, even ignoring DES itself.  In particular, it did not
provide the "integrity" cryptographic property (detection of tampering), and
it treated ASCII passwords as 64-bit keys (instead of using a KDF like
scrypt or PBKDF2).

Some general approaches ed(1) users might consider to replace the removed
DES mode:

1. Full disk encryption with something like AES-XTS.  This is easy to
conceptualize, design, and implement, and it provides confidentiality for
data at rest.  Like CBC, it lacks tampering protection.  Examples include
GELI, LUKS, FileVault2.

2. Encrypted overlay ("stackable") filesystems (EncFS, PEFS?, CryptoFS,
others).

3. Native encryption at the filesystem layer.  Ext4/F2FS, ZFS, APFS, and
NTFS all have some flavor of this.

4. Storing your files unencrypted.  It's not like DES was doing you much
good.

If you have DES-CBC scrambled files produced by ed(1) prior to this change,
you may decrypt them with:

  openssl des-cbc -d -iv 0 -K <key in hex> -in <inputfile> -out <plaintext>

Reviewed by: allanjude, bapt, emaste
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D17829

5 years agoUpdate LLVM_VERSION_PATCH define in llvm-config.h.
dim [Sun, 4 Nov 2018 17:56:09 +0000 (17:56 +0000)]
Update LLVM_VERSION_PATCH define in llvm-config.h.

5 years agolibcapsicum: Introduce caph_{rights,ioctls,fcntls}_limit
oshogbo [Sun, 4 Nov 2018 17:22:58 +0000 (17:22 +0000)]
libcapsicum: Introduce caph_{rights,ioctls,fcntls}_limit

The idea behind those functions is not to force consumers to remember that there
is a need to check errno on failure. We already have a caph_enter(3) function
which does the same for cap_enter(2).

MFC after: 2 weeks

5 years agocapsicum: allow ppoll(2) in capability mode
oshogbo [Sun, 4 Nov 2018 17:12:53 +0000 (17:12 +0000)]
capsicum: allow ppoll(2) in capability mode

We already allow to use poll(2). There is no reason to disallow ppoll(2).

PR: 232495
Submitted by: Stefan Grundmann <sg2342@googlemail.com>
Reviewed by: cem, oshogbo
MFC after: 2 weeks

5 years agoTeach man(1) about C.UTF-8.
yuripv [Sun, 4 Nov 2018 16:58:55 +0000 (16:58 +0000)]
Teach man(1) about C.UTF-8.

While here, use LANG as the proper source to select man pages language/encoding,
falling back to LC_CTYPE.

Reviewed by: bapt
Approved by: kib (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D17835

5 years agoUpdate expat to 2.2.6
vangyzen [Sun, 4 Nov 2018 16:08:59 +0000 (16:08 +0000)]
Update expat to 2.2.6

Update contrib/expat by merging from the vendor branch.

Update expat_config.h manually, using
    make -C /usr/ports/textproc/expat2 configure
as a baseline.

MFC after: 1 month
Relnotes: yes
Security: yes; see contrib/expat/Changes since 2.2.0
Sponsored by: Dell EMC Isilon

5 years agoMerge ^/head r339813 through r340125.
dim [Sun, 4 Nov 2018 15:49:06 +0000 (15:49 +0000)]
Merge ^/head r339813 through r340125.

5 years agoMerge llvm, clang, lld, lldb, compiler-rt and libc++ release_70 branch
dim [Sun, 4 Nov 2018 15:46:30 +0000 (15:46 +0000)]
Merge llvm, clang, lld, lldb, compiler-rt and libc++ release_70 branch
r346007 (effectively 7.0.1 rc2), resolve conflicts, and bump version
numbers.

PR: 230240, 230355

5 years agocsqrt(3): Fix some typos in the manual page
0mp [Sun, 4 Nov 2018 14:11:38 +0000 (14:11 +0000)]
csqrt(3): Fix some typos in the manual page

Submitted by: Steve Kargl <sgk@troutmask.apl.washington.edu>
Reviewed by: eadler
Approved by:    krion (mentor, implicit), mat (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D17831

5 years agoSimplify NLS alias handling by using native make(1) multi variable for loops
bapt [Sun, 4 Nov 2018 10:14:08 +0000 (10:14 +0000)]
Simplify NLS alias handling by using native make(1) multi variable for loops

5 years agoFix bad copy/paste
bapt [Sun, 4 Nov 2018 06:59:13 +0000 (06:59 +0000)]
Fix bad copy/paste

5 years agoSimplify a bit distrib-dirs target
bapt [Sun, 4 Nov 2018 06:47:21 +0000 (06:47 +0000)]
Simplify a bit distrib-dirs target

Reviewed by: bdrewery
Differential Revision: https://reviews.freebsd.org/D3915

5 years agonfsd: Factorize code
bapt [Sun, 4 Nov 2018 06:39:01 +0000 (06:39 +0000)]
nfsd: Factorize code

Factorize code by using struct sockaddr_storage to handle both ipv6 and ipv4

Discussed with: rmacklem
Reviewed by: manu
MFC after: 1 month
Sponsored by: Gandi.net
Differential Revision: https://reviews.freebsd.org/D13223

5 years agoipfw(8): clarify layer2 processing abilities
eugen [Sun, 4 Nov 2018 06:35:48 +0000 (06:35 +0000)]
ipfw(8): clarify layer2 processing abilities

Make it clear that ipfw action set for layer2 frames it a bit limited.

PR: 59835
Reviewed by: yuripv
MFC after: 1 month
Differential Revision: https://reviews.freebsd.org/D17719

5 years agoAdd aditional counter descriptions to AMD 0x17
mmacy [Sun, 4 Nov 2018 06:24:27 +0000 (06:24 +0000)]
Add aditional counter descriptions to AMD 0x17

Submitted by: Somalapuram Amaranath
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D17401

5 years agoRemove Obj_Entry textsize member.
kib [Sun, 4 Nov 2018 00:32:28 +0000 (00:32 +0000)]
Remove Obj_Entry textsize member.

It is unused after r340102, and more important, I do not see how to
define textsize in both practically useful and correct way, for binaries
with more that one executable segments.

Sponsored by: The FreeBSD Foundation

5 years agostrptime: make %k and %l specifiers match their description in
yuripv [Sat, 3 Nov 2018 23:37:13 +0000 (23:37 +0000)]
strptime: make %k and %l specifiers match their description in
strftime(3), and allow them to process space-padded input.

PR: 230720
Submitted by: rlittle@inetco.com (original version)
Approved by: kib (mentor, implicit)
Differential Revision: https://reviews.freebsd.org/D17761

5 years agoUpdate to CLDR 34 and UNICODE 11.
yuripv [Sat, 3 Nov 2018 22:02:10 +0000 (22:02 +0000)]
Update to CLDR 34 and UNICODE 11.

Discussed with: bapt
Approved by: kib (mentor)
MFC after: 1 month

5 years agoFlush data cache for executable loadable segments explicitly.
kib [Sat, 3 Nov 2018 20:39:16 +0000 (20:39 +0000)]
Flush data cache for executable loadable segments explicitly.

Do not use textsize and do not flush everything between map base and
base + textsize, because unmapped areas cannot be flushed.

This makes Obj_Entry textsize only use go away, and I will remove it
later.

Reported by: tuexen
Tested by: Mark Millard <marklmi26-fbsd@yahoo.com>
Sponsored by: The FreeBSD Foundation

5 years agoDo not use bzero() for the O_ICMP6TYPE opcode.
ae [Sat, 3 Nov 2018 20:05:50 +0000 (20:05 +0000)]
Do not use bzero() for the O_ICMP6TYPE opcode.

The buffer is already zeroed in compile_rule() function, and also it
may contain configured F_NOT flag in o.len field. This fixes the filling
for "not icmp6types" opcode.

PR: 232939
MFC after: 3 days

5 years agolibcompat: disable retpoline when building build tools
emaste [Sat, 3 Nov 2018 19:31:11 +0000 (19:31 +0000)]
libcompat: disable retpoline when building build tools

These are built with the host toolchain which may not support retpoline.
While here, move the MK_ overrides to a separate line and sort them
alphabetically to support future changes.

MFC with: r339511
Sponsored by: The FreeBSD Foundation

5 years agoUpdate the "flag" for draft-ietf-6man-ipv6only-flag.
bz [Sat, 3 Nov 2018 18:03:24 +0000 (18:03 +0000)]
Update the "flag" for draft-ietf-6man-ipv6only-flag.

Having the flag named "6" can possibly be a problem for configurations
where parsing strings and numbers can produce ambivalent results.
Rename the "6" flag to the "S"ix (or Silence-IPv4) flag.

5 years agoConvert epoch to read / write records per cpu
mmacy [Sat, 3 Nov 2018 03:43:32 +0000 (03:43 +0000)]
Convert epoch to read / write records per cpu

In discussing D17503 "Run epoch calls sooner and more reliably" with
sbahra@ we came to the conclusion that epoch is currently misusing the
ck_epoch API. It isn't safe to do a "write side" operation (ck_epoch_call
or ck_epoch_poll) in the middle of a "read side" section. Since, by definition,
it's possible to be preempted during the middle of an EPOCH_PREEMPT
epoch the GC task might call ck_epoch_poll or another thread might call
ck_epoch_call on the same section. The right solution is ultimately to change
the way that ck_epoch works for this use case. However, as a stopgap for
12 we agreed to simply have separate records for each use case.

Tested by: pho@

MFC after: 3 days

5 years ago9952 Block size change during zfs receive drops spill block
mav [Sat, 3 Nov 2018 03:10:06 +0000 (03:10 +0000)]
9952 Block size change during zfs receive drops spill block

Replication code in receive_object() falsely assumes that if received
object block size is different from local, then it must be a new object
and calls dmu_object_reclaim() to wipe it out. In most cases it is not a
problem, since all dnode, bonus buffer and data block(s) are immediately
rewritten any way, but the problem is that spill block (if used) is not.
This means loss of ACLs, extended attributes, etc.

This issue can be triggered in very simple way:
1. create 4KB file with 10+ ACL entries;
2. take snapshot and send it to different dataset;
3. append another 4KB to the file;
4. take another snapshot and send incrementally;
5. witness ACL loss on receive side.

PR: 198457
Discussed with: mahrens
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.

5 years agoRemove apparently unused 0-byte files that cause grief on Windows
emaste [Sat, 3 Nov 2018 01:53:26 +0000 (01:53 +0000)]
Remove apparently unused 0-byte files that cause grief on Windows

r235274 added a sort regression test (it operates by comparing output
against GNU sort).  The commit included a number of 0-byte files, one
of which ends in a trailing . which reportedly breaks svn/git checkouts
on Windows.

It appears these were added accidentally, so just remove them.

PR: 232479
MFC after: 1 month

5 years agoAdd missing .El
imp [Sat, 3 Nov 2018 01:44:37 +0000 (01:44 +0000)]
Add missing .El

5 years agoDocument disbale_phy in ahcich sysctls.
imp [Sat, 3 Nov 2018 00:47:02 +0000 (00:47 +0000)]
Document disbale_phy in ahcich sysctls.

5 years agoImplement ability to turn on/off PHYs for AHCI devices.
imp [Sat, 3 Nov 2018 00:37:51 +0000 (00:37 +0000)]
Implement ability to turn on/off PHYs for AHCI devices.

As part of Chuck's work on fixing kernel crashes caused by disk I/O
errors, it is useful to be able to trigger various kinds of
errors. This patch allows causing an AHCI-attached disk to disappear,
by having the driver keep the PHY disabled when the driver would
otherwise enable the PHY. It also allows making the disk reappear by
having the driver go back to setting the PHY enable/disable state as
it normal would and simulating the hardware event that causes a bus
rescan.

Submitted by: Chuck Silvers
Sponsored by: Netflix, Inc
Differential Revision: https://reviews.freebsd.org/D16043

5 years agoUpdate awk(1) manual to state an exception to egrep(1)-like RE syntax
dteske [Fri, 2 Nov 2018 23:03:40 +0000 (23:03 +0000)]
Update awk(1) manual to state an exception to egrep(1)-like RE syntax

Reviewed by: imp, jmg
MFC after: 3 days
Sponsored by: Smule, Inc.
Differential Revision: https://reviews.freebsd.org/D17739

5 years agoMFV: r339981
jkim [Fri, 2 Nov 2018 22:50:13 +0000 (22:50 +0000)]
MFV: r339981

Merge ACPICA 20181031.

5 years agoUse correct type for IOCTL request argument.
hselasky [Fri, 2 Nov 2018 22:23:25 +0000 (22:23 +0000)]
Use correct type for IOCTL request argument.
This fixes signed IOCTL value warnings in uhsoctl().

MFC after: 1 week
Submitted by: Marcin Cieslak <saper@saper.info>
Sponsored by: Mellanox Technologies

5 years agoFurther research shows usbdump(8) is what we should point people at
imp [Fri, 2 Nov 2018 22:18:02 +0000 (22:18 +0000)]
Further research shows usbdump(8) is what we should point people at
rather than tcpdump for usb traffic capture.

5 years agoCatch up with the SCSI device removal. We should likely review why we
imp [Fri, 2 Nov 2018 22:15:47 +0000 (22:15 +0000)]
Catch up with the SCSI device removal. We should likely review why we
even have this.