]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 years agoMerge OpenSSL 1.1.1f.
Jung-uk Kim [Tue, 31 Mar 2020 15:47:55 +0000 (15:47 +0000)]
Merge OpenSSL 1.1.1f.

4 years agoImport OpenSSL 1.1.1f.
Jung-uk Kim [Tue, 31 Mar 2020 15:25:23 +0000 (15:25 +0000)]
Import OpenSSL 1.1.1f.

4 years agoMake jemalloc(3) default to retain:true on 64-bit platforms,
Edward Tomasz Napierala [Tue, 31 Mar 2020 13:48:06 +0000 (13:48 +0000)]
Make jemalloc(3) default to retain:true on 64-bit platforms,
like it already does on Linux and OSX.  This results in significantly
fewer calls to mmap(2).  This should result in a small reduction
in system CPU time and improved superpage usage.

Reviewed by: markj
Tested by: markj
MFC after: 2 weeks
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D23874

4 years agoAdd 'ctld -t', to test configuration file validity.
Edward Tomasz Napierala [Tue, 31 Mar 2020 13:43:09 +0000 (13:43 +0000)]
Add 'ctld -t', to test configuration file validity.

Reviewed by: mav, allanjude, bcr (man pages)
MFC after: 2 weeks
Sponsored by: Klara Inc.
Differential Revision: https://reviews.freebsd.org/D23792

4 years agoAdd Platform Controller Hub built-in thermal management device driver.
Takanori Watanabe [Tue, 31 Mar 2020 06:25:43 +0000 (06:25 +0000)]
Add Platform Controller Hub built-in thermal management device driver.

Differential Revision: https://reviews.freebsd.org/D24077

4 years agoBhyve: fix SMBIOS Type 17 table generation
Rebecca Cran [Tue, 31 Mar 2020 02:36:39 +0000 (02:36 +0000)]
Bhyve: fix SMBIOS Type 17 table generation

According to the SMBIOS specification (revision 2.7 or newer), the
extended module size field should only be used for sizes that can't
fit in the older size field.

Reviewed by: rgrimes, grehan, jhb
Differential Revision: https://reviews.freebsd.org/D24107

4 years agoUse a dedicated taskqueue thread for in6m_release_task().
Mark Johnston [Tue, 31 Mar 2020 02:25:53 +0000 (02:25 +0000)]
Use a dedicated taskqueue thread for in6m_release_task().

Interfaces may be detached from a taskqueue_thread task, for example by
prison_complete(), so after r359438, when draining the queue we may end
up deadlocking.

Reported by: Jenkins via lwhsu
MFC with: r359438

4 years agoRemove dead code leftover from r331018.
Bryan Drewery [Tue, 31 Mar 2020 01:12:53 +0000 (01:12 +0000)]
Remove dead code leftover from r331018.

Sponsored by: Dell EMC

4 years agoKTLS: Coalesce adjacent TLS trailers & headers to improve PCIe bus efficiency
Andrew Gallatin [Mon, 30 Mar 2020 23:29:53 +0000 (23:29 +0000)]
KTLS: Coalesce adjacent TLS trailers & headers to improve PCIe bus efficiency

KTLS uses the embedded header and trailer fields of unmapped
mbufs. This can lead to "silly" buffer lengths, where we have an
mbuf chain that will create a scatter/gather lists with a
regular pattern of 13 bytes followed by 16 bytes between each
adjacent TLS record.

For software ktls we typically wind up with a pattern where we
have several TLS records encrypted, and made ready at once. When
these records are made ready, we can coalesce these silly buffers
in sbready_compress by copying 13b TLS header of the next record
into the 16b TLS trailer of the current record. After doing so,
we now have a small 29 byte chunk between each TLS record.

This marginally increases PCIe bus efficiency. We've seen an
almost 1Gb/s increase in peak throughput on Broadwell based Xeons
running a 100% software TLS workload with Mellanox ConnectX-4
NICs.

Note that this change is ifdef'ed for KTLS, as KTLS is currently
the only user of the hdr/trailer feature of unmapped mbufs, and
peeking into them is expensive, since the ext_pgs struct lives in
separately allocated memory, and may be cold in cache.

This optimization is not applicable to HW ("NIC") TLS, as that
depends on having the entire TLS record described by a single
unmapped mbuf, so we cannot shift parts of the record between
mbufs for HW TLS.

Reviewed by: jhb, hselasky, scottl
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D24204

4 years agokern_sendfile.c: fix bugs with handling of busy page states.
Konstantin Belousov [Mon, 30 Mar 2020 22:13:32 +0000 (22:13 +0000)]
kern_sendfile.c: fix bugs with handling of busy page states.

- Do not call into a vnode pager while leaving some pages from the
  same block as the current run, xbusy. This immediately deadlocks if
  pager needs to instantiate the buffer.
- Only relookup bogus pages after io finished, otherwise we might
  obliterate the valid pages by out of date disk content.  While there,
  expand the comment explaining this pecularity.
- Do not double-unbusy on error.  Split unbusy for error case, which
  is left in the sendfile_swapin(), from the more properly coded
  normal case in sendfile_iodone().
- Add an XXXKIB comment explaining the serious bug in the validation
  algorithm, not fixed by this patch series.

PR: 244713
Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agokern_sendfile.c: do not release sfio reference on error.
Konstantin Belousov [Mon, 30 Mar 2020 22:01:36 +0000 (22:01 +0000)]
kern_sendfile.c: do not release sfio reference on error.

It is already done by sendfile_iodone(), now consistently for all errors.
This de-facto reverts r358597, after r359466.

Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agokern_sendfile.c: wait for all in-flight ios completion before unwiring pages.
Konstantin Belousov [Mon, 30 Mar 2020 21:57:28 +0000 (21:57 +0000)]
kern_sendfile.c: wait for all in-flight ios completion before unwiring pages.

Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agokern_sendfile.c: add specific malloc type.
Konstantin Belousov [Mon, 30 Mar 2020 21:50:51 +0000 (21:50 +0000)]
kern_sendfile.c: add specific malloc type.

Now sfio leaks are more easily seen in the malloc statistics than
e.g. just wired or busy pages leak.

Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agoTrim some duplicate EIO descriptions.
John Baldwin [Mon, 30 Mar 2020 21:48:47 +0000 (21:48 +0000)]
Trim some duplicate EIO descriptions.

While here, drop an extra conjunction from the list of error
conditions for the remaining EIO description in symlink(2).

Discussed with: mckusick (trimming duplicates)
MFC after: 2 weeks

4 years agoVOP_GETPAGES_ASYNC(): consistently call iodone() callback in case of error.
Konstantin Belousov [Mon, 30 Mar 2020 21:44:30 +0000 (21:44 +0000)]
VOP_GETPAGES_ASYNC(): consistently call iodone() callback in case of error.

Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agoDocument EINTEGRITY errors for many system calls.
John Baldwin [Mon, 30 Mar 2020 21:44:00 +0000 (21:44 +0000)]
Document EINTEGRITY errors for many system calls.

EINTEGRITY was previously documented as a UFS-specific error for
mount(2).  This documents EINTEGRITY as a filesystem-independent error
that may be reported by the backing store of a filesystem.

While here, document EIO as a filesystem-independent error for both
mount(2) and posix_fadvise(2).  EIO was previously only documented for
UFS for mount(2).

Reviewed by: mckusick
Suggested by: mckusick
MFC after: 2 weeks
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D24168

4 years agobuffer pager: skip bogus pages.
Konstantin Belousov [Mon, 30 Mar 2020 21:42:46 +0000 (21:42 +0000)]
buffer pager: skip bogus pages.

We cannot validate bogus page by reading a buffer.

PR: 244713
Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agokern_sendfile.c style: order headers alphabetically.
Konstantin Belousov [Mon, 30 Mar 2020 21:40:35 +0000 (21:40 +0000)]
kern_sendfile.c style: order headers alphabetically.

Reviewed by: glebius, markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D24038

4 years agolibc: unconditionalize _NLIST_DO_ELF
Ed Maste [Mon, 30 Mar 2020 21:25:00 +0000 (21:25 +0000)]
libc: unconditionalize _NLIST_DO_ELF

Suggested by: brooks, imp

4 years agoadd shell script for stale dependency hack
Ed Maste [Mon, 30 Mar 2020 20:20:15 +0000 (20:20 +0000)]
add shell script for stale dependency hack

It's rather awkward to debug issues with the dependency cleanup hacks
when implemented via make.  Add a cleanup shell script and move the
libomp hack there as an initial example.

Reviewed by: brooks
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24228

4 years agonlist: retire long-obsolete aout support
Ed Maste [Mon, 30 Mar 2020 20:15:19 +0000 (20:15 +0000)]
nlist: retire long-obsolete aout support

Reviewed by: brooks, kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24229

4 years agoregen src.conf.5 after WITHOUT_GDB_LIBEXEC removal r359454
Ed Maste [Mon, 30 Mar 2020 20:08:26 +0000 (20:08 +0000)]
regen src.conf.5 after WITHOUT_GDB_LIBEXEC removal r359454

... and a number of other changes since the last regen.

4 years agogallant: pound sign (0xa3) is a bit broken. Add extra glyphs.
Toomas Soome [Mon, 30 Mar 2020 20:07:25 +0000 (20:07 +0000)]
gallant: pound sign (0xa3) is a bit broken. Add extra glyphs.

I did add some more glyphs to provide box drawing and set of additional
glyphs to provide better support for some code pages. Still does not quite
match terminus.

4 years agodrop GDB_LIBEXEC option (now always true)
Ed Maste [Mon, 30 Mar 2020 20:05:09 +0000 (20:05 +0000)]
drop GDB_LIBEXEC option (now always true)

In-tree gdb is essentially obsolete.  We kept it for sparc64 (because
gdb in ports lacked sparc64 support) and as a fallback for crashinfo.
gdb was installed to /libexec on all archs other than sparc64, where the
WITHOUT_GDB_LIBEXEC option was default, with gdb installed to /usr/bin.
With sparc64's retirement WITH_GDB_LIBEXEC became the default for all
architectures, but it was still possible to set it off and install gdb
into /usr/bin.

As the next step in gdb's retirement, remove the option and install gdb
only into /libexec as the crashinfo fallback. We expect users to install
the gdb port or package for debugging. The in-tree gdb lacks support for
a number of supported architectures and does not support contemporary
DWARF debug info.

Reviewed by: jhb (earlier)
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24227

4 years agoRelax existence check of ${LOCALBASE}/bin/kyua
Brooks Davis [Mon, 30 Mar 2020 20:04:55 +0000 (20:04 +0000)]
Relax existence check of ${LOCALBASE}/bin/kyua

After the base kyua import the testsuite can utilize the in-base kyua
just fine.

Submitted by: Dries Michiels
Differential Revision: https://reviews.freebsd.org/D24230

4 years agoflua: follow-up to r359453, don't bother with libedit in bootstrap
Kyle Evans [Mon, 30 Mar 2020 20:01:44 +0000 (20:01 +0000)]
flua: follow-up to r359453, don't bother with libedit in bootstrap

The bootstrap flua should not be used for REPL-like activities; exclude it
to save the dependency on libedit and not waste time with it.

X-MFC-With: r359453

4 years agoelf.5: table markup fixes
Ed Maste [Mon, 30 Mar 2020 19:10:12 +0000 (19:10 +0000)]
elf.5: table markup fixes

Suggested by 0mp in review D23982.

Submitted by: 0mp

4 years agoflua: enable readline bits, courtesy of libedit
Kyle Evans [Mon, 30 Mar 2020 18:43:05 +0000 (18:43 +0000)]
flua: enable readline bits, courtesy of libedit

This is a nicer experience when attempting to run ad-hoc lua bits in the
flua REPL.

PR: 245121
MFC after: 1 week

4 years agoFine grain locking inside the cuse(3) kernel module.
Hans Petter Selasky [Mon, 30 Mar 2020 18:25:43 +0000 (18:25 +0000)]
Fine grain locking inside the cuse(3) kernel module.

Implement one mutex per cuse(3) server instance which also cover the
clients belonging to the given server instance.

This should significantly reduce the mutex congestion inside the
cuse(3) kernel module when multiple servers are in use.

MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agocapabilities.conf: provide information about capmode permitted syscalls
Ed Maste [Mon, 30 Mar 2020 18:24:07 +0000 (18:24 +0000)]
capabilities.conf: provide information about capmode permitted syscalls

Reviewed by: jhb (earlier)
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24118

4 years agoMake sure we convert internal audit records for thr_new
Christian S.J. Peron [Mon, 30 Mar 2020 18:15:36 +0000 (18:15 +0000)]
Make sure we convert internal audit records for thr_new
into BSM records.

MFC after: 2 weeks

4 years agocorrect 'disble' typo in hccontrol
Ed Maste [Mon, 30 Mar 2020 17:38:13 +0000 (17:38 +0000)]
correct 'disble' typo in hccontrol

PR: 245125
Submitted by: Marc Veldman
MFC after: 1 week

4 years agoAdd support for multiple playback and recording devices per physical USB audio
Hans Petter Selasky [Mon, 30 Mar 2020 16:50:32 +0000 (16:50 +0000)]
Add support for multiple playback and recording devices per physical USB audio
device. This requires some structural refactoring inside the driver, mostly
about converting existing audio channel structures into arrays.

The main audio mixer is provided by the first PCM instance.
The non-first audio instances may only have a software mixer for PCM playback.

Tested by: Horse Ma <Shichun.Ma@dell.com>
MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agopowerpc/pmap: Replace a logical TAILQ_FOREACH_SAFE with the real thing
Justin Hibbits [Mon, 30 Mar 2020 16:32:55 +0000 (16:32 +0000)]
powerpc/pmap: Replace a logical TAILQ_FOREACH_SAFE with the real thing

No functional change, just cleanup.

4 years agopowerpc: --secure-plt only needs to pass to ld.bfd, not ld.lld
Justin Hibbits [Mon, 30 Mar 2020 16:24:05 +0000 (16:24 +0000)]
powerpc: --secure-plt only needs to pass to ld.bfd, not ld.lld

ld.lld only supports secure-plt for powerpc, so no need to pass the argument
in.

4 years agoMFV r359442: bmake: import -fno-common fix build back from upstream
Kyle Evans [Mon, 30 Mar 2020 16:22:16 +0000 (16:22 +0000)]
MFV r359442: bmake: import -fno-common fix build back from upstream

sjg@ committed the local patch previously committed upstream; pull it in to
vendor/ to ease any potential stress of future imports.

4 years agobmake: import -fno-common fix build back from upstream
Kyle Evans [Mon, 30 Mar 2020 16:20:04 +0000 (16:20 +0000)]
bmake: import -fno-common fix build back from upstream

sjg@ committed the local patch previously committed upstream; pull it in to
vendor/ to ease any potential stress of future imports.

4 years agoremove extraneous double ;s in sys/
Ed Maste [Mon, 30 Mar 2020 16:04:25 +0000 (16:04 +0000)]
remove extraneous double ;s in sys/

4 years agoImplement new mixer API to return the device pointer based on the mixer pointer.
Hans Petter Selasky [Mon, 30 Mar 2020 15:36:38 +0000 (15:36 +0000)]
Implement new mixer API to return the device pointer based on the mixer pointer.

MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agoEvaluate modifier keys before the regular keys, so that if a modifier
Hans Petter Selasky [Mon, 30 Mar 2020 15:29:39 +0000 (15:29 +0000)]
Evaluate modifier keys before the regular keys, so that if a modifier
key is pressed at the same time as a regular key, that means key with
modifier is output. Some automated USB keyboards like Yubikeys need this.

This fixes a regression issue after r357861.

Reported by: Adam McDougall <mcdouga9@egr.msu.edu>
PR: 224592
PR: 233884
MFC after: 3 days
Sponsored by: Mellanox Technologies

4 years agoRemove the "config" taskqgroup and its KPIs.
Mark Johnston [Mon, 30 Mar 2020 14:24:03 +0000 (14:24 +0000)]
Remove the "config" taskqgroup and its KPIs.

Equivalent functionality is already provided by taskqueue(9), just use
that instead.

MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation

4 years agoFix accounting of hwpmc's thread descriptor freelist.
Mark Johnston [Mon, 30 Mar 2020 14:23:08 +0000 (14:23 +0000)]
Fix accounting of hwpmc's thread descriptor freelist.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation

4 years agoSimplify taskqgroup inititialization.
Mark Johnston [Mon, 30 Mar 2020 14:22:52 +0000 (14:22 +0000)]
Simplify taskqgroup inititialization.

taskqgroup initialization was broken into two steps:

1. allocate the taskqgroup structure, at SI_SUB_TASKQ;
2. initialize taskqueues, start taskqueue threads, enqueue "binder"
   tasks to bind threads to specific CPUs, at SI_SUB_SMP.

Step 2 tries to handle the case where tasks have already been attached
to a queue, by migrating them to their intended queue.  In particular,
tasks can't be enqueued before step 2 has completed.  This breaks NFS
mountroot on systems using an iflib-based driver when EARLY_AP_STARTUP
is not defined, since mountroot happens before SI_SUB_SMP in this case.

Simplify initialization: do all initialization except for CPU binding at
SI_SUB_TASKQ.  This means that until CPU binding is completed, group
tasks may be executed on a CPU other than that to which they were bound,
but this should not be a problem for existing users of the taskqgroup
KPIs.

Reported by: sbruno
Tested by: bdragon, sbruno
MFC after: 1 month
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24188

4 years agofusefs: add a dtrace probe that fires after mounting is complete
Alan Somers [Mon, 30 Mar 2020 14:03:35 +0000 (14:03 +0000)]
fusefs: add a dtrace probe that fires after mounting is complete

This probe is useful for showing the protocol options negotiated with a FUSE
server.

MFC after: 2 weeks

4 years agocron: respect PATH from login.conf
Kyle Evans [Mon, 30 Mar 2020 03:26:52 +0000 (03:26 +0000)]
cron: respect PATH from login.conf

As a followup to the use of login.conf environment vars (other than PATH) in
cron, this patch adds PATH (and HOME) to the list of login.conf settings
respected.

The new logic is as follows:

1. SHELL is always _PATH_BSHELL unless explicitly overridden in the crontab
file itself; no other settings are respected. This is unchanged.

2. PATH is taken from the first of: crontab file, login.conf, _PATH_DEFPATH

3. HOME is taken from the first of: crontab file, login.conf, passwd entry,
unset

4. The current directory for invoking the command is taken from the crontab
file's value of HOME (existing behavior), or the passwd entry, but not
anywhere else (so it might not equal HOME if that was set in login.conf).

Submitted by: Andrew Gierth <andrew_tao173.riddles.org.uk>
Reviewed by: sigsys_gmail.com
Differential Revision: https://reviews.freebsd.org/D23597

4 years agobmake: fix -fno-common build
Kyle Evans [Mon, 30 Mar 2020 00:06:56 +0000 (00:06 +0000)]
bmake: fix -fno-common build

debug was declared extern, but debug_file was not; correct this and define
debug_file in main.c (as debug is) to fix the -fno-common build.

-fno-common will become the default with GCC10/LLVM11.

MFC after: 3 days

4 years agogdb: compile with -fcommon explicitly
Kyle Evans [Sun, 29 Mar 2020 23:59:14 +0000 (23:59 +0000)]
gdb: compile with -fcommon explicitly

As described in the comment, gdb relies on some of the linker magic that
happens with -fcommon. I suspect the life expectancy of gdb-in-base is low
enough that this isn't worth spending much time addressing, especially given
the vintage. Hit it with the -fcommon hammer so that it continues to just
work.

MFC after: 3 days

4 years agoevdev: return error rather than zero-length data on blocked read()
Vladimir Kondratyev [Sun, 29 Mar 2020 23:01:36 +0000 (23:01 +0000)]
evdev: return error rather than zero-length data on blocked read()

if blocked process has been woken up by evdev device destruction.

MFC after: 2 weeks

4 years agoevdev: Add COMPAT_FREEBSD32 support for amd64 arch
Vladimir Kondratyev [Sun, 29 Mar 2020 23:00:33 +0000 (23:00 +0000)]
evdev: Add COMPAT_FREEBSD32 support for amd64 arch

Incompatibility between i386 and amd64 evdev ABIs was caused by presence of
'struct timeval' in evdev protocol. Replace it with 'struct timeval32' for
32 bit binaries.

Big-endian platforms may require additional work due to bitstr_t (array of
unsigned longs) usage in ioctl interface.

MFC after: 2 weeks

4 years agofsck_ffs/fsdb: fix -fno-common build
Kyle Evans [Sun, 29 Mar 2020 20:03:46 +0000 (20:03 +0000)]
fsck_ffs/fsdb: fix -fno-common build

This one is also a small list:

- 3x duplicate definition (ufs2_zino, returntosingle, nflag)
- 5x 'needs extern', 3/5 of which are referenced in fsdb

-fno-common will become the default in GCC10/LLVM11.

MFC after: 1 week

4 years agoFix build with src on a noexec filesystem.
Brooks Davis [Sun, 29 Mar 2020 19:48:28 +0000 (19:48 +0000)]
Fix build with src on a noexec filesystem.

${SH} expands to nothing on src builds so this worked by accident.  Use
a bare "sh" instead.

PR: 245086
Reported by: pkubaj
Sponsored by: DARPA

4 years agolocate: fix -fno-common build
Kyle Evans [Sun, 29 Mar 2020 19:16:14 +0000 (19:16 +0000)]
locate: fix -fno-common build

Just a single variable declaration to extern and define elsewhere here,
myctype.

-fno-common will become a default in GCC10/LLVM11.

MFC after: 3 days

4 years agoopenssh: -fno-common fix from upstream f47d72ddad
Kyle Evans [Sun, 29 Mar 2020 19:14:27 +0000 (19:14 +0000)]
openssh: -fno-common fix from upstream f47d72ddad

This is currently staged in vendor/ as part of the 8.0p1 import, which isn't
quite ready to land. Given that this is a simple one-line fix, apply it now
as the fallout will be pretty minimal.

-fno-common will become the default in GCC10/LLVM11.

MFC after: 3 days

4 years agoAdd a missing suffix that was causing a whole word to get loaded instead
Ian Lepore [Sun, 29 Mar 2020 17:30:08 +0000 (17:30 +0000)]
Add a missing suffix that was causing a whole word to get loaded instead
of the proper 8 or 16 bits when the macro was expanded for those sizes.

Fixes a hang in the armv7 kernel.

Submitted by: Thomas Skibo
Pointy hat: ian@

4 years agoBe a bit more precisly in the description of the sysctl variable
Michael Tuexen [Sun, 29 Mar 2020 15:43:00 +0000 (15:43 +0000)]
Be a bit more precisly in the description of the sysctl variable
net.inet.tcp.pmtud_blackhole_detection. Also remove three entries,
which are not sysctl variables but statistic counters for TCP.
Thanks to 0mp@ for suggesting an improvement.

Reviewed by: bcr@
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D24216

4 years agoloader: use #elif defined() in stand.h
Toomas Soome [Sun, 29 Mar 2020 06:48:59 +0000 (06:48 +0000)]
loader: use #elif defined() in stand.h

Small cleanup.

Reported by: imp

4 years agoSwitch rtsock tests to per-test jails and epair interfaces.
Alexander V. Chernikov [Sun, 29 Mar 2020 06:25:57 +0000 (06:25 +0000)]
Switch rtsock tests to per-test jails and epair interfaces.

Many rtsock tests verify the ordering of the kernel messages for the
 particular event. In order to avoid flaky tests due to the other tests
 running, switch all tests to use personal vnet-enabled jails.
This removes all clashes on the IP addresses and brings back the ability
 to run these tests simultaneously.

Reported by: olivier
Reviewed by: olivier
Differential Revision: https://reviews.freebsd.org/D24182

4 years agoRemove spurious transition from Julian to Gregorian for country
Greg Lehey [Sun, 29 Mar 2020 04:18:27 +0000 (04:18 +0000)]
Remove spurious transition from Julian to Gregorian for country
"Latin".

Arguably the entire -p option should be removed.  It shows only a few
countries, and it doesn't have any relationship with the rest of the
program.

PR: 244801
Submitted by: grog@
Reported by: Hamid Ali

4 years agoAdd STANDARDS section
Greg Lehey [Sun, 29 Mar 2020 04:14:57 +0000 (04:14 +0000)]
Add STANDARDS section

PR: 239723
Submitted by: Gordon Bergling
Reported by: Gordon Bergling

4 years agoRevert r359385-r359387
Enji Cooper [Sun, 29 Mar 2020 02:40:03 +0000 (02:40 +0000)]
Revert r359385-r359387

As noted by brooks/emaste, this is the wrong approach to take.
Revert the changes so brooks can apply a more proper change.

Requested by: brooks, emaste

4 years agosystat: remove redundant definition of kd
Kyle Evans [Sun, 29 Mar 2020 02:30:23 +0000 (02:30 +0000)]
systat: remove redundant definition of kd

kd is already properly declared in extern.h and defined in main.c, rendering
this definition useless. This fixes the -fno-common build.

MFC after: 3 days

4 years agouserboot: mark host_fsops as extern
Kyle Evans [Sun, 29 Mar 2020 02:29:06 +0000 (02:29 +0000)]
userboot: mark host_fsops as extern

This is already defined elsewhere; mark this declaration extern to the fix
the -fno-common build.

MFC after: 3 days

4 years agoiscontrol: move definition of vflag/iscsidev to iscontrol.c
Kyle Evans [Sun, 29 Mar 2020 02:28:15 +0000 (02:28 +0000)]
iscontrol: move definition of vflag/iscsidev to iscontrol.c

Mark the declaration extern as these are used elsewhere; this fixes the
build with -fno-common.

MFC after: 3 days

4 years agoipfilter: remove duplicate definition of 'thishost'
Kyle Evans [Sun, 29 Mar 2020 02:26:58 +0000 (02:26 +0000)]
ipfilter: remove duplicate definition of 'thishost'

thishost is already defined in lib/initparse.c; no need for this one. This
fixes the ipfilter build with -fno-common.

-fno-common will become the default in GCC10/LLVM11.

MFC after: 3 days

4 years agoAdd year to Boganda's death.
Greg Lehey [Sat, 28 Mar 2020 22:44:08 +0000 (22:44 +0000)]
Add year to Boganda's death.

4 years agoloader.efi: restore the init and fix the color setup
Toomas Soome [Sat, 28 Mar 2020 22:37:50 +0000 (22:37 +0000)]
loader.efi: restore the init and fix the color setup

The efi console init is avoided since conin setup was moved to probe.
In case the console is re-initialized, we need to pick up colors
from environment.

4 years agoSmall cleanup by using a variable just assigned.
Michael Tuexen [Sat, 28 Mar 2020 22:35:04 +0000 (22:35 +0000)]
Small cleanup by using a variable just assigned.

MFC after: 1 week

4 years agoloader: typo did slip into 359408
Toomas Soome [Sat, 28 Mar 2020 21:55:42 +0000 (21:55 +0000)]
loader: typo did slip into 359408

somehow r was lost from 'char'.

4 years agoloader: strdup name strings from dataset walker
Toomas Soome [Sat, 28 Mar 2020 21:50:27 +0000 (21:50 +0000)]
loader: strdup name strings from dataset walker

The removal of zfs scratch buffer did miss the fact the dataset
lookup was picking up the names from zap list.

4 years agoloader: add knob to build with user malloc
Toomas Soome [Sat, 28 Mar 2020 21:47:44 +0000 (21:47 +0000)]
loader: add knob to build with user malloc

This option is intended to aid development, to allow building with user malloc.
The use case would be to build userboot & test with libc (or other) malloc and
use extra malloc debug features.

4 years agotelnet: kill off remaining duplicate definition
Kyle Evans [Sat, 28 Mar 2020 20:43:15 +0000 (20:43 +0000)]
telnet: kill off remaining duplicate definition

4 years agoHandle integer overflows correctly when converting msecs and secs to
Michael Tuexen [Sat, 28 Mar 2020 20:25:45 +0000 (20:25 +0000)]
Handle integer overflows correctly when converting msecs and secs to
ticks and vice versa.
These issues were caught by recently added panic() calls on INVARIANTS
systems.

Reported by: syzbot+b44787b4be7096cd1590@syzkaller.appspotmail.com
Reported by: syzbot+35f82d22805c1e899685@syzkaller.appspotmail.com
MFC after: 1 week

4 years agoRe-apply r359399: telnet -fno-common fix
Kyle Evans [Sat, 28 Mar 2020 19:43:45 +0000 (19:43 +0000)]
Re-apply r359399: telnet -fno-common fix

line and auth_level's redefinitions are just extraneous

telnetd will #define extern and then include ext.h to allocate storage for
all of these extern'd vars; however, two of them are actually defined in
libtelnet instead. Instead of doing an #ifdef extern dance around those
function pointers, just add an EXTERN macro to make it easier to
differentiate by sight which ones will get allocated in globals.c and which
ones are defined elsewhere.

MFC after: 3 days

4 years agoRevert 359399: telnet -fno-common bits
Kyle Evans [Sat, 28 Mar 2020 17:57:36 +0000 (17:57 +0000)]
Revert 359399: telnet -fno-common bits

There was a large misfire from my local diff that I need to investigate, and
this version committed did not build.

4 years agoMFV r359401: OpenBSM: import ee79d73e8df5: auditreduce: add a zone filter
Kyle Evans [Sat, 28 Mar 2020 17:36:39 +0000 (17:36 +0000)]
MFV r359401: OpenBSM: import ee79d73e8df5: auditreduce: add a zone filter

This allows one to select audit records that match a -z zone glob.

MFC after: 1 week
Sponsored by: Modirum MDPay, Klara Systems

4 years agoOpenBSM: import ee79d73e8df5: auditreduce: add a zone filter
Kyle Evans [Sat, 28 Mar 2020 17:34:47 +0000 (17:34 +0000)]
OpenBSM: import ee79d73e8df5: auditreduce: add a zone filter

This allows one to select audit records that match a -z zone glob.

Sponsored by: Modirum MDPay, Klara Systems

4 years agotelnet: remove some duplicate definitions, mark terminaltype extern
Kyle Evans [Sat, 28 Mar 2020 17:06:34 +0000 (17:06 +0000)]
telnet: remove some duplicate definitions, mark terminaltype extern

Most of these were already properly declared and defined elsewhere, this is
effectively just a minor cleanup that fixes the -fno-common build.

-fno-common will become the default in GCC10/LLVM11.

MFC after: 3 days

4 years agosh: remove duplicate el definition
Kyle Evans [Sat, 28 Mar 2020 17:02:32 +0000 (17:02 +0000)]
sh: remove duplicate el definition

el is declared extern in myhistedit.h and defined in histedit.c. Remove the
duplicate definition in input.c to appease the -fno-common build.

-fno-common will become the default in GCC10/LLVM11.

MFC after: 3 days

4 years agozfs: fix -fno-common issues
Kyle Evans [Sat, 28 Mar 2020 17:00:38 +0000 (17:00 +0000)]
zfs: fix -fno-common issues

A similar (or identical?) fix has already landed in OpenZFS.

-fno-common will become the default in GCC10/LLVM11.

MFC after: 3 days

4 years agohdaa: remove verbosity from the normal driver operations.
Konstantin Belousov [Sat, 28 Mar 2020 16:26:47 +0000 (16:26 +0000)]
hdaa: remove verbosity from the normal driver operations.

If hdaa is used in polling mode, it logs each change to the poll
interval under bootverbose, which makes it unusable (slow).  These
messages are arguably useless or are a debugging leftovers at best.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days

4 years agoarch.7: update Default Tool Chain section
Ed Maste [Sat, 28 Mar 2020 15:35:47 +0000 (15:35 +0000)]
arch.7: update Default Tool Chain section

All architectures use Clang, lld, and ELF Tool Chain now.

4 years agoMFV r359393: tcsh: import 6974bc35a5cd
Kyle Evans [Sat, 28 Mar 2020 15:00:55 +0000 (15:00 +0000)]
MFV r359393: tcsh: import 6974bc35a5cd

This removes an extra variable definition that causes the -fno-common build
to fail, which will be a new default in GCC10/LLVM11.

MFC after: 3 days

4 years agotcsh: import 6974bc35a5cd
Kyle Evans [Sat, 28 Mar 2020 14:58:03 +0000 (14:58 +0000)]
tcsh: import 6974bc35a5cd

This removes an extra variable definition that causes the -fno-common build
to fail, which will be a new default in GCC10/LLVM11.

4 years agoddb show pginfo: print pages reference value in hex.
Konstantin Belousov [Sat, 28 Mar 2020 12:21:52 +0000 (12:21 +0000)]
ddb show pginfo: print pages reference value in hex.

It is more useful this way after the VPRC_ flags were introduced.

Sponsored by: The FreeBSD Foundation

4 years agoconfig(8): fixes for -fno-common
Kyle Evans [Sat, 28 Mar 2020 04:02:00 +0000 (04:02 +0000)]
config(8): fixes for -fno-common

Move this handful of definitions into main.c, properly declare these as
extern in config.h. This fixes the config(8) build with -fno-common.

Unexplained in my previous commit to gas, -fno-common will become the
default in GCC10 and LLVM11, so it's worth addressing these in advance.

MFC after: 3 days

4 years agogas: mark dwarf2_loc_mark_labels as extern
Kyle Evans [Sat, 28 Mar 2020 03:58:57 +0000 (03:58 +0000)]
gas: mark dwarf2_loc_mark_labels as extern

Compiling with -fno-common complains as this header's included in multiple
compilation units. In fact, the proper definition of dwarf2_loc_mark_labels
already exists in dwarf2dbg.c, so simply mark this declaration with extern.

4 years agoThe .PATH throbbing I added in r359385 is no longer required
Enji Cooper [Sat, 28 Mar 2020 01:16:06 +0000 (01:16 +0000)]
The .PATH throbbing I added in r359385 is no longer required

MFC with: r359385

4 years agoFollow up to r359385
Enji Cooper [Sat, 28 Mar 2020 01:14:37 +0000 (01:14 +0000)]
Follow up to r359385

Actually add the generated manpages to unbreak the build.

MFC with: r359385

4 years agoCheck in the generated copies of the manpages
Enji Cooper [Sat, 28 Mar 2020 01:08:20 +0000 (01:08 +0000)]
Check in the generated copies of the manpages

These manpages were meant to be templated once per `configure` run.

Given that we're not bound by as many constants, e.g., `--prefix` isn't
generally changing for kyua in the base system, having to generate the
manpages each build seems slightly less than optimal.

In the event that one's build environment doesn't define `$SH`, the build
will also fail until this change is introduced.

Instead of jumping through hoops dealing with shells or permissions, let's
just cut to the chase and check the generated copies into the sourcebase
under usr.bin/kyua .

MFC with: r359260
Reported by: Julian Stacey <jhs@berklix.com>

4 years agoUse the real value of MK_TESTS_SUPPORT in _libraries.
Brooks Davis [Fri, 27 Mar 2020 23:27:54 +0000 (23:27 +0000)]
Use the real value of MK_TESTS_SUPPORT in _libraries.

We need to build kyua libraries for kyua.  Because we set MK_TESTS=no,
we can't not set MK_TESTS_SUPPORT=${MK_TESTS_SUPPORT} because the latter
defaults MK_TESTS_SUPPORT to no.

This fixes WITHOUT_TESTS + WITH_TESTS_SUPPORT builds.

Reported by: Ruslan Garipov
Reviewed by: emaste
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D24206

4 years agosys/netinet: remove spurious doubled ;s
Ed Maste [Fri, 27 Mar 2020 23:10:18 +0000 (23:10 +0000)]
sys/netinet: remove spurious doubled ;s

4 years agoSome more uint32_t cleanups, no functional change.
Michael Tuexen [Fri, 27 Mar 2020 21:48:52 +0000 (21:48 +0000)]
Some more uint32_t cleanups, no functional change.

MFC after: 1 week

4 years agoobjdump: emit a deprecation notice at program start
Ed Maste [Fri, 27 Mar 2020 19:39:14 +0000 (19:39 +0000)]
objdump: emit a deprecation notice at program start

PR: 212319

4 years agoremove binutils ld leftovers
Ed Maste [Fri, 27 Mar 2020 19:17:45 +0000 (19:17 +0000)]
remove binutils ld leftovers

4 years agoRefactor driver and consumer interfaces for OCF (in-kernel crypto).
John Baldwin [Fri, 27 Mar 2020 18:25:23 +0000 (18:25 +0000)]
Refactor driver and consumer interfaces for OCF (in-kernel crypto).

- The linked list of cryptoini structures used in session
  initialization is replaced with a new flat structure: struct
  crypto_session_params.  This session includes a new mode to define
  how the other fields should be interpreted.  Available modes
  include:

  - COMPRESS (for compression/decompression)
  - CIPHER (for simply encryption/decryption)
  - DIGEST (computing and verifying digests)
  - AEAD (combined auth and encryption such as AES-GCM and AES-CCM)
  - ETA (combined auth and encryption using encrypt-then-authenticate)

  Additional modes could be added in the future (e.g. if we wanted to
  support TLS MtE for AES-CBC in the kernel we could add a new mode
  for that.  TLS modes might also affect how AAD is interpreted, etc.)

  The flat structure also includes the key lengths and algorithms as
  before.  However, code doesn't have to walk the linked list and
  switch on the algorithm to determine which key is the auth key vs
  encryption key.  The 'csp_auth_*' fields are always used for auth
  keys and settings and 'csp_cipher_*' for cipher.  (Compression
  algorithms are stored in csp_cipher_alg.)

- Drivers no longer register a list of supported algorithms.  This
  doesn't quite work when you factor in modes (e.g. a driver might
  support both AES-CBC and SHA2-256-HMAC separately but not combined
  for ETA).  Instead, a new 'crypto_probesession' method has been
  added to the kobj interface for symmteric crypto drivers.  This
  method returns a negative value on success (similar to how
  device_probe works) and the crypto framework uses this value to pick
  the "best" driver.  There are three constants for hardware
  (e.g. ccr), accelerated software (e.g. aesni), and plain software
  (cryptosoft) that give preference in that order.  One effect of this
  is that if you request only hardware when creating a new session,
  you will no longer get a session using accelerated software.
  Another effect is that the default setting to disallow software
  crypto via /dev/crypto now disables accelerated software.

  Once a driver is chosen, 'crypto_newsession' is invoked as before.

- Crypto operations are now solely described by the flat 'cryptop'
  structure.  The linked list of descriptors has been removed.

  A separate enum has been added to describe the type of data buffer
  in use instead of using CRYPTO_F_* flags to make it easier to add
  more types in the future if needed (e.g. wired userspace buffers for
  zero-copy).  It will also make it easier to re-introduce separate
  input and output buffers (in-kernel TLS would benefit from this).

  Try to make the flags related to IV handling less insane:

  - CRYPTO_F_IV_SEPARATE means that the IV is stored in the 'crp_iv'
    member of the operation structure.  If this flag is not set, the
    IV is stored in the data buffer at the 'crp_iv_start' offset.

  - CRYPTO_F_IV_GENERATE means that a random IV should be generated
    and stored into the data buffer.  This cannot be used with
    CRYPTO_F_IV_SEPARATE.

  If a consumer wants to deal with explicit vs implicit IVs, etc. it
  can always generate the IV however it needs and store partial IVs in
  the buffer and the full IV/nonce in crp_iv and set
  CRYPTO_F_IV_SEPARATE.

  The layout of the buffer is now described via fields in cryptop.
  crp_aad_start and crp_aad_length define the boundaries of any AAD.
  Previously with GCM and CCM you defined an auth crd with this range,
  but for ETA your auth crd had to span both the AAD and plaintext
  (and they had to be adjacent).

  crp_payload_start and crp_payload_length define the boundaries of
  the plaintext/ciphertext.  Modes that only do a single operation
  (COMPRESS, CIPHER, DIGEST) should only use this region and leave the
  AAD region empty.

  If a digest is present (or should be generated), it's starting
  location is marked by crp_digest_start.

  Instead of using the CRD_F_ENCRYPT flag to determine the direction
  of the operation, cryptop now includes an 'op' field defining the
  operation to perform.  For digests I've added a new VERIFY digest
  mode which assumes a digest is present in the input and fails the
  request with EBADMSG if it doesn't match the internally-computed
  digest.  GCM and CCM already assumed this, and the new AEAD mode
  requires this for decryption.  The new ETA mode now also requires
  this for decryption, so IPsec and GELI no longer do their own
  authentication verification.  Simple DIGEST operations can also do
  this, though there are no in-tree consumers.

  To eventually support some refcounting to close races, the session
  cookie is now passed to crypto_getop() and clients should no longer
  set crp_sesssion directly.

- Assymteric crypto operation structures should be allocated via
  crypto_getkreq() and freed via crypto_freekreq().  This permits the
  crypto layer to track open asym requests and close races with a
  driver trying to unregister while asym requests are in flight.

- crypto_copyback, crypto_copydata, crypto_apply, and
  crypto_contiguous_subsegment now accept the 'crp' object as the
  first parameter instead of individual members.  This makes it easier
  to deal with different buffer types in the future as well as
  separate input and output buffers.  It's also simpler for driver
  writers to use.

- bus_dmamap_load_crp() loads a DMA mapping for a crypto buffer.
  This understands the various types of buffers so that drivers that
  use DMA do not have to be aware of different buffer types.

- Helper routines now exist to build an auth context for HMAC IPAD
  and OPAD.  This reduces some duplicated work among drivers.

- Key buffers are now treated as const throughout the framework and in
  device drivers.  However, session key buffers provided when a session
  is created are expected to remain alive for the duration of the
  session.

- GCM and CCM sessions now only specify a cipher algorithm and a cipher
  key.  The redundant auth information is not needed or used.

- For cryptosoft, split up the code a bit such that the 'process'
  callback now invokes a function pointer in the session.  This
  function pointer is set based on the mode (in effect) though it
  simplifies a few edge cases that would otherwise be in the switch in
  'process'.

  It does split up GCM vs CCM which I think is more readable even if there
  is some duplication.

- I changed /dev/crypto to support GMAC requests using CRYPTO_AES_NIST_GMAC
  as an auth algorithm and updated cryptocheck to work with it.

- Combined cipher and auth sessions via /dev/crypto now always use ETA
  mode.  The COP_F_CIPHER_FIRST flag is now a no-op that is ignored.
  This was actually documented as being true in crypto(4) before, but
  the code had not implemented this before I added the CIPHER_FIRST
  flag.

- I have not yet updated /dev/crypto to be aware of explicit modes for
  sessions.  I will probably do that at some point in the future as well
  as teach it about IV/nonce and tag lengths for AEAD so we can support
  all of the NIST KAT tests for GCM and CCM.

- I've split up the exising crypto.9 manpage into several pages
  of which many are written from scratch.

- I have converted all drivers and consumers in the tree and verified
  that they compile, but I have not tested all of them.  I have tested
  the following drivers:

  - cryptosoft
  - aesni (AES only)
  - blake2
  - ccr

  and the following consumers:

  - cryptodev
  - IPsec
  - ktls_ocf
  - GELI (lightly)

  I have not tested the following:

  - ccp
  - aesni with sha
  - hifn
  - kgssapi_krb5
  - ubsec
  - padlock
  - safe
  - armv8_crypto (aarch64)
  - glxsb (i386)
  - sec (ppc)
  - cesa (armv7)
  - cryptocteon (mips64)
  - nlmsec (mips64)

Discussed with: cem
Relnotes: yes
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D23677

4 years ago[PowerPC] Fix LIB32WMAKEFLAGS definition
Brandon Bergren [Fri, 27 Mar 2020 18:20:36 +0000 (18:20 +0000)]
[PowerPC] Fix LIB32WMAKEFLAGS definition

When I modified the LIB32WMAKEFLAGS= definition, I trimmed too much off.
-m is meant to be a parameter to LD.

Reported by: arichardson

4 years agoloader.efi: conout->QueryMode() can fail to return screen dimensions
Toomas Soome [Fri, 27 Mar 2020 18:01:01 +0000 (18:01 +0000)]
loader.efi: conout->QueryMode() can fail to return screen dimensions

Some systems are reported to fail to report screen dimensions unless the
screen mode is set first.

4 years agoloader: Fully reset terminal settings, not just colors
Ryan Moeller [Fri, 27 Mar 2020 17:37:31 +0000 (17:37 +0000)]
loader: Fully reset terminal settings, not just colors

Reviewed by: kevans
Reviewed by: tsoome
Approved by: mav (mentor)
MFC after: 1 week
Sponsored by: iXsystems, Inc.
Differential Revision: https://reviews.freebsd.org/D21733

4 years agoCreate and use a tests group for the tests user.
Brooks Davis [Fri, 27 Mar 2020 16:05:37 +0000 (16:05 +0000)]
Create and use a tests group for the tests user.

No user (except nobody) should be a member of the nobody group.

Reported by: rgrimes
Reviewed by: rgrimes
MFC after: 3 days
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D24199

4 years agobhyve: fix NVMe emulation update of SQHD
Chuck Tuffli [Fri, 27 Mar 2020 15:28:27 +0000 (15:28 +0000)]
bhyve: fix NVMe emulation update of SQHD

The SQHD field of a Completion Queue entry indicates the current
Submission Queue head pointer value. The head pointer represents the
next entry to be consumed and is updated after consuming the current
entry.

In the Admin queue processing, the current code updates the head pointer
after reporting the value to the host via the SQHD. This gives the
impression that the Controller is perpetually one command behind in its
processing of the Admin SQ. And while this doesn't appear to bother some
initiators, it is wrong.

Fix is to update the SQ head pointer prior to writing the SQHD value in
the completion.

While here, fix missed update of dword 0 (cdw0) in the completion
message.

Reported by: khng300
Reviewed by: jhb, imp
Approved by: jhb (maintainer)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D24083