]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
2 years agonet80211: fix build for 526370fb85db4b659cff4625eb2f379acaa4a1a8
Bjoern A. Zeeb [Fri, 8 Oct 2021 11:21:44 +0000 (11:21 +0000)]
net80211: fix build for 526370fb85db4b659cff4625eb2f379acaa4a1a8

In 526370fb85db4b659cff4625eb2f379acaa4a1a8 "net80211: proper ssid
length check in setmlme_assoc_adhoc()" we are checking the
sizeof on an array function parameter which leads to a warning that
it will resturn the size of the type of the array rather than the
array size itself.  Use the defined length used both in the ioctl
and the sizing of the array function parameter instead.

Reported by: CI
MFC after: 3 days
X-MFC with: 526370fb85db4b659cff4625eb2f379acaa4a1a8

2 years agoUSB: adjust the Generic XHCI ACPI probe return value
Bjoern A. Zeeb [Fri, 1 Oct 2021 13:37:01 +0000 (13:37 +0000)]
USB: adjust the Generic XHCI ACPI probe return value

Change the probe return value from BUS_PROBE_DEFAULT to BUS_PROBE_GENERIC
given this is the "generic" attach method.  This allows individual
drivers using XHCI generic but needing their own intialisation to
gain priority for attaching over the generic implementation.

Reviewed by: hselasky
Differential Revision: https://reviews.freebsd.org/D32257

2 years agonet80211: correct length check in ieee80211_ies_expand()
Bjoern A. Zeeb [Wed, 6 Oct 2021 18:09:39 +0000 (18:09 +0000)]
net80211: correct length check in ieee80211_ies_expand()

In ieee80211_ies_expand() we are looping over Elements
(also known as Information Elements or IEs).
The comment suggests that we assume well-formedness of
the IEs themselves.
Checking the buffer length being least 2 (1 byte Element ID and
1 byte Length fields) rather than just 1 before accessing ie[1]
is still good practise and can prevent and out-of-bounds read in
case the input is not behaving according to the comment.

Reported by: (coypu sdf.org)
admbugs: 857
MFC after: 3 days
Reviewed by: adrian, markj
Differential Revision: https://reviews.freebsd.org/D32340

2 years agonet80211: proper ssid length check in setmlme_assoc_adhoc()
Bjoern A. Zeeb [Wed, 6 Oct 2021 18:41:37 +0000 (18:41 +0000)]
net80211: proper ssid length check in setmlme_assoc_adhoc()

A user supplied SSID length is used without proper checks in
setmlme_assoc_adhoc() which can lead to copies beyond the end
of the user supplied buffer.
The ssid is a fixed size array for the ioctl and the argument
to setmlme_assoc_adhoc().
In addition to an ssid_len check of 0 also error in case the
ssid_len is larger than the size of the ssid array to prevent
problems.

PR: 254737
Reported by: Tommaso (cutesmilee.research protonmail.com)
MFC after: 3 days
Reviewed by: emaste, adrian
Differential Revision: https://reviews.freebsd.org/D32341

2 years agosctp: improve KASSERT messages
Michael Tuexen [Fri, 8 Oct 2021 09:32:55 +0000 (11:32 +0200)]
sctp: improve KASSERT messages

MFC after: 1 week

2 years agovm_fault: do not trigger OOM too early
Konstantin Belousov [Mon, 4 Oct 2021 06:36:02 +0000 (09:36 +0300)]
vm_fault: do not trigger OOM too early

Wakeup in vm_waitpfault() does not mean that the thread would get the
page on the next vm_page_alloc() call, other thread might steal the free
page we were waiting for. On the other hand, this wakeup might come much
earlier than just vm_pfault_oom_wait seconds, if the rate of the page
reclamation is high enough.

If wakeups come fast and we loose the allocation race enough times, OOM
could be undeservably triggered much earlier than vm_pfault_oom_attempts
x vm_pfault_oom_wait seconds.  Fix it by not counting the number of sleeps,
but measuring the time to th first allocation failure, and triggering OOM
when it was older than oom_attempts x oom_wait seconds.

Reviewed by: markj
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D32287

2 years agorouting: Use the same index space for both nexthop and nexthop groups.
Alexander V. Chernikov [Wed, 6 Oct 2021 19:07:54 +0000 (19:07 +0000)]
routing: Use the same index space for both nexthop and nexthop groups.

This simplifies userland object handling along with kernel-level
 nexthop handling in fib algo framework.

MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D32342

2 years agodwmmc: Calculate the maximum transaction length correctly.
Michal Meloun [Thu, 7 Oct 2021 18:42:56 +0000 (20:42 +0200)]
dwmmc: Calculate the maximum transaction length correctly.

We should reserve two descriptors (not MMC_SECTORS) for potentially
unaligned (so bounced) buffer fragments, one for the starting fragment
and one for the ending fragment.

Submitted by: kjopek@gmail.com
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D30387

2 years agostress2: Added a regression test
Peter Holm [Fri, 8 Oct 2021 06:38:17 +0000 (06:38 +0000)]
stress2: Added a regression test

2 years agostress2: exclude known problem test
Peter Holm [Fri, 8 Oct 2021 06:35:17 +0000 (06:35 +0000)]
stress2: exclude known problem test

2 years agoprometheus_sysctl_exporter(8): filter output using a regex
Robert Wing [Fri, 8 Oct 2021 01:00:27 +0000 (17:00 -0800)]
prometheus_sysctl_exporter(8): filter output using a regex

Add two options, -i and -e, for filtering prometheus metrics.

Each option takes a regular expression as an argument. The provided
regex will be tested against the prometheus metric name.

The -i option includes metrics matching the given regex.
The -e option excludes metrics matching the given regex.

Sponsored by:   Modirum MDPay
Sponsored by:   Klara Inc.
Reviewed by: 0mp, debdrup
Differential Revision: https://reviews.freebsd.org/D32269

2 years agoMake core dump writes interruptible with SIGKILL
Konstantin Belousov [Tue, 5 Oct 2021 05:11:32 +0000 (08:11 +0300)]
Make core dump writes interruptible with SIGKILL

This can be disabled by sysctl kern.core_dump_can_intr

Reported and tested by: pho
Reviewed by: imp, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32313

2 years agocore(5): explicitly mention the core file size limit name
Konstantin Belousov [Tue, 5 Oct 2021 14:52:44 +0000 (17:52 +0300)]
core(5): explicitly mention the core file size limit name

Reviewed by: imp, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32313

2 years agoAdd curproc_sigkilled()
Konstantin Belousov [Tue, 5 Oct 2021 05:08:51 +0000 (08:08 +0300)]
Add curproc_sigkilled()

Function returns an indicator that the process was killed with SIGKILL

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

2 years agosys/proc.h: remove dead prototype
Konstantin Belousov [Tue, 5 Oct 2021 05:07:27 +0000 (08:07 +0300)]
sys/proc.h: remove dead prototype

Reviewed by: imp, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32313

2 years agokern_sig.c: Remove unused SIGPROP_CANTMASK
Konstantin Belousov [Tue, 5 Oct 2021 04:55:54 +0000 (07:55 +0300)]
kern_sig.c: Remove unused SIGPROP_CANTMASK

Reviewed by: imp, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32313

2 years agoriscv: move signal delivery code to exec_machdep.c
Konstantin Belousov [Mon, 4 Oct 2021 15:15:17 +0000 (18:15 +0300)]
riscv: move signal delivery code to exec_machdep.c

Reviewed by: emaste, imp
Discussed with: jrtc27
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32310

2 years agoarm: move signal delivery code to exec_machdep.c
Konstantin Belousov [Mon, 4 Oct 2021 11:39:11 +0000 (14:39 +0300)]
arm: move signal delivery code to exec_machdep.c

Reviewed by: emaste, imp
Discussed with: jrtc27
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32310

2 years agoarm64: move signal delivery code to exec_machdep.c
Konstantin Belousov [Mon, 4 Oct 2021 06:55:51 +0000 (09:55 +0300)]
arm64: move signal delivery code to exec_machdep.c

also move ptrace-related helpers to ptrace_machdep.c.

Reviewed by: emaste, imp
Discussed with: jrtc27
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32310

2 years agoi386: move signal delivery code to exec_machdep.c
Konstantin Belousov [Mon, 4 Oct 2021 01:29:26 +0000 (04:29 +0300)]
i386: move signal delivery code to exec_machdep.c

also move ptrace-related helpers to ptrace_machdep.c
Apply some style. Use ANSI C function definitions.
Remove MPSAFE annotations.

Reviewed by: emaste, imp
Discussed with: jrtc27
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32310

2 years agoAvoid lost buffers in fsck_ffs.
Kirk McKusick [Thu, 7 Oct 2021 22:51:56 +0000 (15:51 -0700)]
Avoid lost buffers in fsck_ffs.

The ino_blkatoff() and indir_blkatoff() functions failed to release
the buffers holding second and third level indirect blocks. This
commit ensures that these buffers are now properly released.

MFC after:    1 week
Sponsored by: Netflix

2 years agoriscv: fix VM_MAXUSER_ADDRESS checks in asm routines
Mitchell Horne [Thu, 7 Oct 2021 21:12:30 +0000 (18:12 -0300)]
riscv: fix VM_MAXUSER_ADDRESS checks in asm routines

There are two issues with the checks against VM_MAXUSER_ADDRESS. First,
the comparison should consider the values as unsigned, otherwise
addresses with the high bit set will fail to branch. Second, the value
of VM_MAXUSER_ADDRESS is, by convention, one larger than the maximum
mappable user address and invalid itself. Thus, use the bgeu instruction
for these comparisons.

Add a regression test case for copyin(9).

PR: 257193
Reported by: Robert Morris <rtm@lcs.mit.edu>
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D31209

2 years agoriscv: handle page faults in the unmappable region
Mitchell Horne [Thu, 7 Oct 2021 21:05:38 +0000 (18:05 -0300)]
riscv: handle page faults in the unmappable region

When handling a kernel page fault, check explicitly that stval resides
in either the user or kernel address spaces, and make the page fault
fatal if not. Otherwise, a properly crafted address may appear to
pmap_fault() as a valid and present page in the kernel map, causing the
page fault to be retried continuously. This is mainly due to the fact
that the upper bits of virtual addresses are not validated by most of
the pmap code.

Faults of this nature should only occur due to some kind of bug in the
kernel, but it is best to handle them gracefully when they do.

Handle user page faults in the same way, sending a SIGSEGV immediately
when a malformed address is encountered.

Add an assertion to pmap_l1(), which should help catch other bugs of
this kind that make it this far.

Reviewed by: jrtc27, markj
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D31208

2 years agopf: remove unused field from pf_kanchor
Kristof Provost [Mon, 4 Oct 2021 08:58:27 +0000 (10:58 +0200)]
pf: remove unused field from pf_kanchor

The 'match' field is only used in the userspace version of the struct
(pf_anchor).

MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")

2 years agopfctl: Remove unused variable
Kristof Provost [Thu, 30 Sep 2021 15:25:45 +0000 (17:25 +0200)]
pfctl: Remove unused variable

MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC ("Netgate")

2 years agodiff: consider two files with same inodes as identical
Mariusz Zaborski [Thu, 7 Oct 2021 15:07:00 +0000 (17:07 +0200)]
diff: consider two files with same inodes as identical

Obtained from: OpenBSD
MFC after: 1 week

2 years agoi2c(8): fix option handling
Martin Birgmeier [Thu, 7 Oct 2021 05:20:56 +0000 (21:20 -0800)]
i2c(8): fix option handling

Recognize the '-o' option when processing command line arguments.

Fixes: 9c10d00bf8cd ("i2c(8): Add interpreted mode for batch/scripted...")
PR:     258572

2 years agobuild: slap a libtinfo dependency on libncurses
Kyle Evans [Thu, 7 Oct 2021 03:01:05 +0000 (22:01 -0500)]
build: slap a libtinfo dependency on libncurses

This mirrors the SUBDIR_DEPEND in lib/ncurses/Makefile.

Reported by: jenkins (e.g., riscv64 build #23984)
Fixes: 396851c20aeb ("ncurses: split libtinfo from libncurses")

2 years agoixgbe: Update shared code catchup
Kevin Bowling [Thu, 7 Oct 2021 01:43:27 +0000 (18:43 -0700)]
ixgbe: Update shared code catchup

Leftovers from DPDK sync

Reviewed by: grehan
Obtained from: DPDK
MFC after: 5 days
Differential Revision: https://reviews.freebsd.org/D31621

2 years agolibfido2: Address CHERI compatibility
Jessica Clarke [Sat, 2 Oct 2021 15:51:38 +0000 (16:51 +0100)]
libfido2: Address CHERI compatibility

Cherry-picked from libfido2 upstream f20a735c0a6f:

iso7816: Avoid storing pointers in a packed structure

On CHERI, and thus Arm's experimental Morello prototype architecture,
pointers are represented as capabilities, which are unforgeable bounded
pointers, providing always-on fine-grained spatial memory safety. The
unforgeability is enforced through the use of tagged memory, with one
validity tag bit per capability-sized-and-aligned word in memory. This
means that storing a pointer to an unaligned location, which is not
guaranteed to work per the C standard, either traps or results in the
capability losing its tag (and thus never being dereferenceable again),
depending on how exactly the store is done (specifically, whether a
capability store or memcpy is used).

However, iso7816 itself does not need to be packed, and doing so likely
causes inefficiencies on existing architectures. The iso7816_header_t
member is packed, and the flexible payload array is a uint8_t (which by
definition has no padding bits and is exactly 8 bits in size and, since
CHAR_BITS must be at least 8, its existence implies that it has the same
representation as unsigned char, and that it has size and alignment 1)
so there will never be any padding inserted between header and payload
(but payload may overlap with padding at the end of the struct due to
how flexible arrays work, which means we need to be careful about our
calculations).

Co-authored-by: pedro martelletto <pedro@yubico.com>
2 years agoImport libfido2 at 'contrib/libfido2/'
Ed Maste [Thu, 7 Oct 2021 01:27:02 +0000 (21:27 -0400)]
Import libfido2 at 'contrib/libfido2/'

git-subtree-dir: contrib/libfido2
git-subtree-mainline: d586c978b9b4216869e589daa5bbcc33225a0e35
git-subtree-split: a58dee945a5da64d0e97f35a508928e0d17c9cc7

2 years agostand: fix build after recent opencrypto changes
Kyle Evans [Thu, 7 Oct 2021 01:19:47 +0000 (20:19 -0500)]
stand: fix build after recent opencrypto changes

Pass the ivlen along through, and just drop this KASSERT() if we're
building _STANDALONE for the time being.

Fixes: 1833d6042c9a ("crypto: Permit variable-sized IVs ...")

2 years agoImport libcbor at 'contrib/libcbor/'
Ed Maste [Thu, 7 Oct 2021 00:26:10 +0000 (20:26 -0400)]
Import libcbor at 'contrib/libcbor/'

git-subtree-dir: contrib/libcbor
git-subtree-mainline: 293663f4da9e8b8aeb106ce3b73a8ed2aa2a8a90
git-subtree-split: 5b2defbd2a1aa991bd0a2855eef8e15107572747

2 years agoe1000: print EEPROM/NVM/OROM versions
Kevin Bowling [Wed, 6 Oct 2021 23:25:03 +0000 (16:25 -0700)]
e1000: print EEPROM/NVM/OROM versions

This is useful for diagnosing problems. In particular, the errata
sheets identify the EEPROM version for many fixes.

Reviewed by: gallatin
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D32333

2 years agoe1000: Lock nvm print sysctl
Kevin Bowling [Wed, 6 Oct 2021 23:20:26 +0000 (16:20 -0700)]
e1000: Lock nvm print sysctl

Otherwise results in KASSERT with debug kernels because we rely on the
iflib CTX lock to implement the software serialization to the NVM model

Reviewed by: gallatin
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D32333

2 years agocontrib/bc: update to version 5.1.1
Stefan Eßer [Wed, 6 Oct 2021 21:30:59 +0000 (23:30 +0200)]
contrib/bc: update to version 5.1.1

Merge commit '6f49f5cdde1c62c4e5a743e895f3afe592b5c0e5'

2 years agovendor/bc: update to version 5.1.1
Stefan Eßer [Wed, 6 Oct 2021 21:27:16 +0000 (23:27 +0200)]
vendor/bc: update to version 5.1.1

This update fixes a parser issue, which in special situations could
reject syntactically correct if statements.

2 years agoBump __FreeBSD_version for OCF changes to support variable nonce lengths.
John Baldwin [Wed, 6 Oct 2021 21:09:18 +0000 (14:09 -0700)]
Bump __FreeBSD_version for OCF changes to support variable nonce lengths.

Sponsored by: The FreeBSD Foundation

2 years agocrypto: Support Chacha20-Poly1305 with a nonce size of 8 bytes.
John Baldwin [Wed, 6 Oct 2021 21:08:49 +0000 (14:08 -0700)]
crypto: Support Chacha20-Poly1305 with a nonce size of 8 bytes.

This is useful for WireGuard which uses a nonce of 8 bytes rather
than the 12 bytes used for IPsec and TLS.

Note that this also fixes a (should be) harmless bug in ossl(4) where
the counter was incorrectly treated as a 64-bit counter instead of a
32-bit counter in terms of wrapping when using a 12 byte nonce.
However, this required a single message (TLS record) longer than 64 *
(2^32 - 1) bytes (about 256 GB) to trigger.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32122

2 years agocrypto: Test all of the AES-CCM KAT vectors.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
crypto: Test all of the AES-CCM KAT vectors.

Previously, only test vectors which used the default nonce and tag
sizes (12 and 16, respectively) were tested.  This now tests all of
the vectors.  This exposed some additional issues around requests with
an empty payload (which wasn't supported) and an empty AAD (which
falls back to CIOCCRYPT instead of CIOCCRYPTAEAD).

- Make use of the 'ivlen' and 'maclen' fields for CIOGSESSION2 to
  test AES-CCM vectors with non-default nonce and tag lengths.

- Permit requests with an empty payload.

- Permit an input MAC for requests without AAD.

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32121

2 years agocryptosoft: Fix support for variable tag lengths in AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
cryptosoft: Fix support for variable tag lengths in AES-CCM.

The tag length is included as one of the values in the flags byte of
block 0 passed to CBC_MAC, so merely copying the first N bytes is
insufficient.

To avoid adding more sideband data to the CBC MAC software context,
pull the generation of block 0, the AAD length, and AAD padding out of
cbc_mac.c and into cryptosoft.c.  This matches how GCM/GMAC are
handled where the length block is constructed in cryptosoft.c and
passed as an input to the Update callback.  As a result, the CBC MAC
Update() routine is now much simpler and simply performs the
XOR-and-encrypt step on each input block.

While here, avoid a copy to the staging block in the Update routine
when one or more full blocks are passed as input to the Update
callback.

Reviewed by: sef
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32120

2 years agosafexcel: Support truncated tags for AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
safexcel: Support truncated tags for AES-CCM.

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32119

2 years agosafexcel: Support multiple nonce lengths for AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
safexcel: Support multiple nonce lengths for AES-CCM.

Reviewed by: markj
Sponsored by: Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32118

2 years agoccr: Support AES-CCM requests with truncated tags.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
ccr: Support AES-CCM requests with truncated tags.

Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D32117

2 years agoccr: Support multiple nonce lengths for AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
ccr: Support multiple nonce lengths for AES-CCM.

Sponsored by: Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32116

2 years agoaesni: Support AES-CCM requests with a truncated tag.
John Baldwin [Wed, 6 Oct 2021 21:08:48 +0000 (14:08 -0700)]
aesni: Support AES-CCM requests with a truncated tag.

Reviewed by: sef
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32115

2 years agoaesni: Permit AES-CCM requests with neither payload nor AAD.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
aesni: Permit AES-CCM requests with neither payload nor AAD.

Reviewed by: sef
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32114

2 years agoaesni: Handle requests with an empty payload.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
aesni: Handle requests with an empty payload.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32113

2 years agoaesni: Support multiple nonce lengths for AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
aesni: Support multiple nonce lengths for AES-CCM.

Reviewed by: sef
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32112

2 years agocrypto: Support multiple nonce lengths for AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
crypto: Support multiple nonce lengths for AES-CCM.

Permit nonces of lengths 7 through 13 in the OCF framework and the
cryptosoft driver.  A helper function (ccm_max_payload_length) can be
used in OCF drivers to reject CCM requests which are too large for the
specified nonce length.

Reviewed by: sef
Sponsored by: Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32111

2 years agocryptocheck: Support multiple IV sizes for AES-CCM.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
cryptocheck: Support multiple IV sizes for AES-CCM.

By default, the "normal" IV size (12) is used, but it can be overriden
via -I.  If -I is not specified and -z is specified, issue requests
for all possible IV sizes.

Reviewed by: markj
Sponsored by:  Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32110

2 years agocryptodev: Allow some CIOCCRYPT operations with an empty payload.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
cryptodev: Allow some CIOCCRYPT operations with an empty payload.

If an operation would generate a MAC output (e.g. for digest operation
or for an AEAD or EtA operation), then an empty payload buffer is
valid.  Only reject requests with an empty buffer for "plain" cipher
sessions.

Some of the AES-CCM NIST KAT vectors use an empty payload.

While here, don't advance crp_payload_start for requests that use an
empty payload with an inline IV. (*)

Reported by: syzbot+d4b94fbd9a44b032f428@syzkaller.appspotmail.com (*)
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32109

2 years agocryptodev: Permit CIOCCRYPT for AEAD ciphers.
John Baldwin [Wed, 6 Oct 2021 21:08:47 +0000 (14:08 -0700)]
cryptodev: Permit CIOCCRYPT for AEAD ciphers.

A request without AAD for an AEAD cipher can be submitted via
CIOCCRYPT rather than CIOCCRYPTAEAD.

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32108

2 years agocryptodev: Permit explicit IV/nonce and MAC/tag lengths.
John Baldwin [Wed, 6 Oct 2021 21:08:46 +0000 (14:08 -0700)]
cryptodev: Permit explicit IV/nonce and MAC/tag lengths.

Add 'ivlen' and 'maclen' fields to the structure used for CIOGSESSION2
to specify the explicit IV/nonce and MAC/tag lengths for crypto
sessions.  If these fields are zero, the default lengths are used.

This permits selecting an alternate nonce length for AEAD ciphers such
as AES-CCM which support multiple nonce leengths.  It also supports
truncated MACs as input to AEAD or ETA requests.

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32107

2 years agocryptosoft, ccr: Use crp_iv directly for AES-CCM and AES-GCM.
John Baldwin [Wed, 6 Oct 2021 21:08:46 +0000 (14:08 -0700)]
cryptosoft, ccr: Use crp_iv directly for AES-CCM and AES-GCM.

Rather than copying crp_iv to a local array on the stack that is then
passed to xform reinit routines, pass crp_iv directly and remove the
local copy.

Reviewed by: markj
Sponsored by: Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32106

2 years agocrypto: Permit variable-sized IVs for ciphers with a reinit hook.
John Baldwin [Wed, 6 Oct 2021 21:08:46 +0000 (14:08 -0700)]
crypto: Permit variable-sized IVs for ciphers with a reinit hook.

Add a 'len' argument to the reinit hook in 'struct enc_xform' to
permit support for AEAD ciphers such as AES-CCM and Chacha20-Poly1305
which support different nonce lengths.

Reviewed by: markj
Sponsored by: Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32105

2 years agoccp, ccr: Simplify drivers to assume an AES-GCM IV length of 12.
John Baldwin [Wed, 6 Oct 2021 21:08:46 +0000 (14:08 -0700)]
ccp, ccr: Simplify drivers to assume an AES-GCM IV length of 12.

While here, use crypto_read_iv() in a few more places in ccr(4) that I
missed previously.

Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D32104

2 years agocryptodev: Use 'csp' in the handlers for requests.
John Baldwin [Wed, 6 Oct 2021 21:08:46 +0000 (14:08 -0700)]
cryptodev: Use 'csp' in the handlers for requests.

- Retire cse->mode and use csp->csp_mode instead.
- Use csp->csp_cipher_algorithm instead of the ivsize when checking
  for the fixup for the IV length for AES-XTS.

Reviewed by: markj
Sponsored by: Chelsio Communications, The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32103

2 years agoe1000: Function prototype cleanup
Kevin Bowling [Wed, 6 Oct 2021 21:03:38 +0000 (14:03 -0700)]
e1000: Function prototype cleanup

Drop arguments of function prototypes since the file is mixed between
listing arg names and not.

No functional changes

Reviewed by: markj
MFC after: 3 days
Differential Revision: https://reviews.freebsd.org/D32329

2 years agologin.conf.5: Mark passwordtime as implemented
Felix Johnson [Wed, 6 Oct 2021 20:47:02 +0000 (22:47 +0200)]
login.conf.5: Mark passwordtime as implemented

login.conf.5 listed passwordtime in RESERVED CAPABILITIES, which is a
section for capabilities not implemented in the base system. However,
passwordtime has been implemented in the base for several years now.

PR: 246099
Reported by: avg
Reviewed by: 0mp
MFC after: 3 days

2 years agofusefs: fix intermittency in the dev_fuse_poll test
Alan Somers [Sat, 25 Sep 2021 16:16:20 +0000 (10:16 -0600)]
fusefs: fix intermittency in the dev_fuse_poll test

The DevFusePoll::access/select test would occasionally segfault.  The
cause was a file descriptor that was shared between two threads.  The
first thread would kill the second and close the file descriptor.  But
it was possible that the second would read the file descriptor before it
shut down.  That did not cause problems for kqueue, poll, or blocking
operation, but it triggered segfaults in select's macros.

MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D32142

2 years agomalloc: Unmark KASAN redzones if the full allocation size was requested
Mark Johnston [Wed, 6 Oct 2021 20:03:30 +0000 (16:03 -0400)]
malloc: Unmark KASAN redzones if the full allocation size was requested

Consumers that want the full allocation size will typically access the
full buffer, so mark the entire allocation as valid to avoid useless
KASAN reports.

Sponsored by: The FreeBSD Foundation

2 years agofusefs: Fix a bug during VOP_STRATEGY when the server changes file size
Alan Somers [Sun, 3 Oct 2021 17:51:14 +0000 (11:51 -0600)]
fusefs: Fix a bug during VOP_STRATEGY when the server changes file size

If the FUSE server tells the kernel that a file's size has changed, then
the kernel must invalidate any portion of that file in cache.  But the
kernel can't do that during VOP_STRATEGY, because the file's buffers are
already locked.  Instead, proceed with the write.

PR: 256937
Reported by: Agata <chogata@moosefs.pro>
Tested by: Agata <chogata@moosefs.pro>
MFC after: 2 weeks
Reviewed by: pfg
Differential Revision: https://reviews.freebsd.org/D32332

2 years agofusefs: fix a recurse-on-non-recursive lockmgr panic
Alan Somers [Sat, 2 Oct 2021 18:17:36 +0000 (12:17 -0600)]
fusefs: fix a recurse-on-non-recursive lockmgr panic

fuse_vnop_bmap needs to know the file's size in order to calculate the
optimum amount of readahead.  If the file's size is unknown, it must ask
the FUSE server.  But if the file's data was previously cached and the
server reports that its size has shrunk, fusefs must invalidate the
cached data.  That's not possible during VOP_BMAP because the buffer
object is already locked.

Fix the panic by not querying the FUSE server for the file's size during
VOP_BMAP if we don't need it.  That's also a a slight performance
optimization.

PR: 256937
Reported by: Agata <chogata@moosefs.pro>
Tested by: Agata <chogata@moosefs.pro>
MFC after: 2 weeks

2 years agofusefs: quiet some cache-related warnings
Alan Somers [Sun, 3 Oct 2021 16:59:04 +0000 (10:59 -0600)]
fusefs: quiet some cache-related warnings

If the FUSE server does something that would make our cache incoherent,
we should print a warning to the user.  However, we previously warned in
some situations when we shouldn't, such as if the file's size changed on
the server _after_ our own attribute cache had expired.  This change
suppresses the warning in cases like that.  It also moves the warning
logic to a single place within the code.

PR: 256936
Reported by: Agata <chogata@moosefs.pro>
Tested by: Agata <chogata@moosefs.pro>, jSML4ThWwBID69YC@protonmail.com
MFC after: 2 weeks

2 years agolinuxkpi: Handle a NULL cache pointer in kmem_cache_destroy()
Mark Johnston [Wed, 6 Oct 2021 18:45:22 +0000 (14:45 -0400)]
linuxkpi: Handle a NULL cache pointer in kmem_cache_destroy()

This is compatible with Linux, and some driver error paths depend on it.

Reviewed by: bz, emaste
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D32337

2 years agontp.conf.5: Fix typos
Elyes HAOUAS [Wed, 6 Oct 2021 05:38:06 +0000 (07:38 +0200)]
ntp.conf.5: Fix typos

"certian" --> "certain"
"compatability" --> "compatibility"
"noticable" --> "noticeable"
"limite" --> "limit"
"acutal" --> "actual"
"ba" --> "be"

MFC after: 1 week
Pull Request:   https://github.com/freebsd/freebsd-src/pull/550
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2 years agoWhen queuing ignored signal, only abort target thread' sleep if it is inside sigwait()
Konstantin Belousov [Sun, 3 Oct 2021 02:03:59 +0000 (05:03 +0300)]
When queuing ignored signal, only abort target thread' sleep if it is inside sigwait()

Reported and tested by: trasz
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32252

2 years agoWhen sending ignored signal, arrange for zero return code from sleep
Konstantin Belousov [Fri, 1 Oct 2021 06:59:02 +0000 (09:59 +0300)]
When sending ignored signal, arrange for zero return code from sleep

Otherwise consumers get unexpected EINTR errors without seeing
a properly discarded signal.

Reported and tested by: trasz
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32252

2 years agoMove td_pflags2 TDP2_SIGWAIT to td_flags TDF_SIGWAIT
Konstantin Belousov [Sun, 3 Oct 2021 01:52:39 +0000 (04:52 +0300)]
Move td_pflags2 TDP2_SIGWAIT to td_flags TDF_SIGWAIT

The flag should be accessible from non-current threads.

Reviewed by: markj
Tested by: trasz
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32252

2 years agologin: use sizeof(audit_cond) consistently, NFC
Kyle Evans [Wed, 6 Oct 2021 04:24:24 +0000 (23:24 -0500)]
login: use sizeof(audit_cond) consistently, NFC

The other three instances were already converted to use audit_cond, this
one was just changed from sizeof(long) -> sizeof(int).

2 years agoFix mistakes in link(2) and shm_open(2)
Konstantin Belousov [Wed, 6 Oct 2021 03:38:26 +0000 (06:38 +0300)]
Fix mistakes in link(2) and shm_open(2)

PR: 258957
Submitted by: sigsys@gmail.com
MFC after: 1 week

2 years agoamd64 efirt: do not flush cache for runtime pages
Konstantin Belousov [Tue, 5 Oct 2021 14:14:11 +0000 (17:14 +0300)]
amd64 efirt: do not flush cache for runtime pages

We actually do not know is it safe or not to flush cache for random
BAR/register page existing in the system.  It is well-known that for
instance LAPICs cannot tolerate cache flush.  As report indicates,
there are more such devices.

This issue typically affects AMD machines which do not report self-snoop,
causing real CLFLUSH invocation on the mapped pages.  Intels do self-snoop,
so this change should be nop for them, and unsafe devices, if any, are
already ignored.

Reported and tested by: manu
Reviewed by: alc, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32318

2 years agoamd64: add pmap_page_set_memattr_noflush()
Konstantin Belousov [Tue, 5 Oct 2021 14:12:05 +0000 (17:12 +0300)]
amd64: add pmap_page_set_memattr_noflush()

Similar to pmap_page_set_memattr() by setting MD page cache attribute
to the argument.  Unlike pmap_page_set_memattr(), does not flush cache
for the direct mapping of the page.

Reviewed by: alc, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32318

2 years agoapic: initialize lapic_paddr statically
Konstantin Belousov [Tue, 5 Oct 2021 13:19:56 +0000 (16:19 +0300)]
apic: initialize lapic_paddr statically

The default value for LAPIC registers page physical address
is usually right. Having this value available early makes
pmap_force_invalidate_cache_range(), used on non-self-snoop machines,
avoid flushing LAPIC range for early calls.

Reviewed by: alc, markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D32318

2 years agounifdef.1: Fix typo on "input"
Elyes HAOUAS [Tue, 5 Oct 2021 18:58:51 +0000 (20:58 +0200)]
unifdef.1: Fix typo on "input"

Pull request: https://github.com/freebsd/freebsd-src/pull/549
Signed-off-by: Elyes HAOUAS <ehaouas@noos.fr>
2 years agosysdecode_enum.3: Fix a typo: SIGBTRAP -> SIGTRAP.
John Baldwin [Tue, 5 Oct 2021 21:55:18 +0000 (14:55 -0700)]
sysdecode_enum.3: Fix a typo: SIGBTRAP -> SIGTRAP.

MFC after: 3 days
Sponsored by: DARPA

2 years agoRemove obsolete amd(8) rc.conf configuration
Tom Hukins [Tue, 5 Oct 2021 14:34:52 +0000 (14:34 +0000)]
Remove obsolete amd(8) rc.conf configuration

The script that used these was removed in 13f7dbe822d5f along with amd
itself.

Fixes: 13f7dbe822d5 ("retire amd(8)")
MFC after: 1 week
Pull Request: https://github.com/freebsd/freebsd-src/pull/548

2 years agocam(4): Limit search for disks in SES enclosure by single bus
Alexander Motin [Tue, 5 Oct 2021 19:01:16 +0000 (15:01 -0400)]
cam(4): Limit search for disks in SES enclosure by single bus

At least for SAS that we only support now disks are typically
connected to the same bus as the enclosure.  Limiting the search
scope makes it much faster on systems with multiple buses and
thousands of disks.

Reviewed by: imp
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Differential Revision: https://reviews.freebsd.org/D32305

2 years agocam(4): Improve XPT_DEV_MATCH
Alexander Motin [Tue, 5 Oct 2021 18:54:03 +0000 (14:54 -0400)]
cam(4): Improve XPT_DEV_MATCH

Remove *_MATCH_NONE enums, making no sense and so never used.  Make
*_MATCH_ANY enums 0 (no any match flags set), previously used by
*_MATCH_NONE.  Bump CAM_VERSION to 0x1a reflecting those changes and
add compat shims.

When traversing through buses and devices do not descend if we can
already see that requested pattern does not match the bus or device.
It allows to save significant amount of time on system with thousands
of disks when doing limited searches.

Reviewed by: imp
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Differential Revision: https://reviews.freebsd.org/D32304

2 years agosbuf(9): Microoptimize sbuf_put_byte()
Alexander Motin [Tue, 5 Oct 2021 18:42:47 +0000 (14:42 -0400)]
sbuf(9): Microoptimize sbuf_put_byte()

This function is actively used by sbuf_vprintf(), so this simple
inlining in half reduces time of kern.geom.confxml generation.

MFC after: 2 weeks
Sponsored by: iXsystem, Inc.

2 years agocam: Add doxygen for cam_sim_free
Warner Losh [Tue, 5 Oct 2021 13:07:17 +0000 (07:07 -0600)]
cam: Add doxygen for cam_sim_free

Sponsored by: Netflix
Reviewed by: mav
Differential Revision: https://reviews.freebsd.org/D32303

2 years agocesa: remove unused CESA_SESSIONS macro
Mateusz Guzik [Tue, 5 Oct 2021 12:12:03 +0000 (12:12 +0000)]
cesa: remove unused CESA_SESSIONS macro

Unused since 1b0909d51a8aa8b5 ("OpenCrypto: Convert sessions to opaque handles
instead of integers")

Sponsored by: Rubicon Communications, LLC ("Netgate")

2 years agomlx5_en: fix use of CALLOUT_DIRECT
Konstantin Belousov [Wed, 8 Sep 2021 15:37:20 +0000 (18:37 +0300)]
mlx5_en: fix use of CALLOUT_DIRECT

Reported by: markj
Reviewed by: hselasky
Sponsored by: NVIDIA Networking
MFC after: 1 week

2 years agonetstat: split ipsec and ipsec6 statistics in libxo
Mateusz Guzik [Tue, 5 Oct 2021 09:42:58 +0000 (09:42 +0000)]
netstat: split ipsec and ipsec6 statistics in libxo

In particular fixes --libxo json

PR: 254673
Reported by: j.vandeville@gmail.com
Sponsored by:   Rubicon Communications, LLC ("Netgate")

2 years agomlx4en(4): Fix wrong mbuf cluster size in mlx4_en_debugnet_init()
Hans Petter Selasky [Tue, 5 Oct 2021 08:46:56 +0000 (10:46 +0200)]
mlx4en(4): Fix wrong mbuf cluster size in mlx4_en_debugnet_init()

This fixes an "invalid cluster size" panic when debugnet is activated.

panic()
m_getzone()
debugnet_mbuf_reinit()
debugnet_any_ifnet_update()
ifhwioctl()
ifioctl()

Submitted by: ae@
PR: 258923
MFC after: 1 week
Sponsored by: NVIDIA Networking

2 years agoRevert erroneous commit ded0d3d486eba
Stefan Eßer [Tue, 5 Oct 2021 07:41:46 +0000 (09:41 +0200)]
Revert erroneous commit ded0d3d486eba

These files came from a prior commit to contrib/bc and seem to have
been placed in the top of the source tree by a failed git rebase.

Reported by: markj

2 years agosdhci: Fix crash caused by M_WAITOK in sdhci dumps
Bartlomiej Grzesik [Tue, 5 Oct 2021 04:22:32 +0000 (06:22 +0200)]
sdhci: Fix crash caused by M_WAITOK in sdhci dumps

In some contexts it is illegal to wait for memory allocation, causing
kernel panic. By default sbuf_new passes M_WAITOK to malloc,
which caused crashes when sdhci_dumpcaps or sdhci_dumpregs was callend in
non sutiable context.

Add SBUF_NOWAIT flag to sbuf_new to fix this.

Obtained from: Semihalf
Differential revision: https://reviews.freebsd.org/D32075

2 years agopthread_mutexattr(3): document each pthread_mutexattr_set/get* function
Konstantin Belousov [Fri, 1 Oct 2021 01:39:39 +0000 (04:39 +0300)]
pthread_mutexattr(3): document each pthread_mutexattr_set/get* function

The descriptions may be more elaborated of course, but this is a good
step at starting providing any useful information in our man page, at all.

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential revision: https://reviews.freebsd.org/D32243

2 years agolibthr(3): explain some internals of the locks implementation
Konstantin Belousov [Fri, 1 Oct 2021 01:17:02 +0000 (04:17 +0300)]
libthr(3): explain some internals of the locks implementation

Describe internal allocations, mention problems with the use of global
malloc(3) and the reasons for internal allocator existence.

Document shared objects implementation and describe shortcomings of the
chosen approach, as well as the rationale why it was done that way.

Reviewed by: markj
Discussed with: jilles
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential revision: https://reviews.freebsd.org/D32243

2 years agopthread_mutexattr(3): install pthread_mutexattr_get/setpshared links
Konstantin Belousov [Fri, 1 Oct 2021 00:53:44 +0000 (03:53 +0300)]
pthread_mutexattr(3): install pthread_mutexattr_get/setpshared links

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential revision: https://reviews.freebsd.org/D32243

2 years agopthread_mutexattr(3): document pthread_mutexattr_set/getpshared
Konstantin Belousov [Fri, 1 Oct 2021 00:46:16 +0000 (03:46 +0300)]
pthread_mutexattr(3): document pthread_mutexattr_set/getpshared

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential revision: https://reviews.freebsd.org/D32243

2 years agopthread_mutexattr(3): use .Fo/.Fc to avoid too long lines
Konstantin Belousov [Fri, 1 Oct 2021 00:40:19 +0000 (03:40 +0300)]
pthread_mutexattr(3): use .Fo/.Fc to avoid too long lines

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential revision: https://reviews.freebsd.org/D32243

2 years agogeom_label: Add more validation for NTFS volume tasting
Mark Johnston [Mon, 4 Oct 2021 21:48:44 +0000 (17:48 -0400)]
geom_label: Add more validation for NTFS volume tasting

- Ensure that the computed MFT record size isn't negative or larger than
  maxphys before trying to read $Volume.
- Guard against truncated records in volume metadata.
- Ensure that the record length is large enough to contain the volume
  name.
- Verify that the (UTF-16-encoded) volume name's length is a multiple of
  two.

PR: 258833, 258914
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation

2 years agocontrib/bc: merge version 5.1.0 from vendor branch
Stefan Eßer [Mon, 4 Oct 2021 20:25:24 +0000 (22:25 +0200)]
contrib/bc: merge version 5.1.0 from vendor branch

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

Merge commit '5d58a51571721190681c50d4bd3a1f45e6282d72'

2 years agocontrib/bc: re-enable tests after the import of version 5.1.0
Stefan Eßer [Mon, 4 Oct 2021 19:43:52 +0000 (21:43 +0200)]
contrib/bc: re-enable tests after the import of version 5.1.0

The tests have been fixed to not write any data outside of the
temporary work directory provided by the test framework.

MFC after: 3 days

2 years agoAdd back Windows only VCXProj files
Stefan Eßer [Wed, 28 Jul 2021 13:35:16 +0000 (15:35 +0200)]
Add back Windows only VCXProj files

2 years agoRemove files that were checked in with wrong .gitattributes
Stefan Eßer [Wed, 28 Jul 2021 13:31:57 +0000 (15:31 +0200)]
Remove files that were checked in with wrong .gitattributes

These files will be added back in updated form, but are only relevant
for the Windows platform, anyway.

2 years agovendor/bc: update to version 5.1.0
Stefan Eßer [Mon, 4 Oct 2021 19:22:35 +0000 (21:22 +0200)]
vendor/bc: update to version 5.1.0

This version adds options and functions that allow to print numbers
in the open interval (-1 .. 1) with or without a leading 0 digit.

Additionally, an option has been added to prevent line wrap and
allows to print arbitrarily long results on a single line.

2 years agoRPCBIND: skip ipv6 link local when request is not from link local address
David Bright [Mon, 4 Oct 2021 15:43:41 +0000 (08:43 -0700)]
RPCBIND: skip ipv6 link local when request is not from link local address

RPCINFO on macOS behaves different compared to other linux clients and
doesn't provide request address in rpcb structure of the
RPCBPROC_GETADDRLIST call which doesn't seem to be forbidden.

In this case RPCBIND uses RPC call's source address and picks a
closest corresponding local address. If there are no addresses in the
same subnet as the source address, return of RPCBIND may vary
depending on the order of addresses returned in getifaddrs. If a link
local precedes global address it may be returned even if the request
comes from neither a link local nor from link local in a different
scope, which will prevent services like nfs from working in tpc6
scenario on macOS clients. Issue can be seen only on FreeBSD rpcbind
port due to changes in workflow of addrmerge call.

Submitted by: Dmitry Ovsyannikov (Dmitry.Ovsyannikov@dell.com)
Reviewers: dab
Differential Revision: https://reviews.freebsd.org/D31491
Sponsored by: Dell EMC
MFC to: stable/12, stable/13
MFC after: 1 week