]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 years agoMFV r359442: bmake: import -fno-common fix build back from upstream
kevans [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 agoremove extraneous double ;s in sys/
emaste [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.
hselasky [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
hselasky [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.
markj [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.
markj [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.
markj [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
asomers [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
kevans [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
kevans [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
kevans [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()
wulf [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
wulf [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
kevans [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 [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
kevans [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
kevans [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 [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
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
tsoome [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.
melifaro [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
grog [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
grog [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
ngie [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
kevans [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
kevans [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
kevans [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'
kevans [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.
grog [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
tsoome [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.
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
tsoome [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
tsoome [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
tsoome [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
kevans [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
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
kevans [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
kevans [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
kevans [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 agotelnet: remove some duplicate definitions, mark terminaltype extern
kevans [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
kevans [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
kevans [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.
kib [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
emaste [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
kevans [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 agoddb show pginfo: print pages reference value in hex.
kib [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
kevans [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
kevans [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
ngie [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
ngie [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
ngie [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 [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
emaste [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.
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
emaste [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
emaste [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).
jhb [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
bdragon [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
tsoome [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
freqlabs [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 [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 [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

4 years agobhyve: fix NVMe emulation missed interrupts
chuck [Fri, 27 Mar 2020 15:28:22 +0000 (15:28 +0000)]
bhyve: fix NVMe emulation missed interrupts

The bhyve NVMe emulation has a race in the logic which generates command
completion interrupts. On FreeBSD guests, this manifests as kernel log
messages similar to:
    nvme0: Missing interrupt

The NVMe emulation code sets a per-submission queue "busy" flag while
processing the submission queue, and only generates an interrupt when
the submission queue is not busy.

Aside from being counter to the NVMe design (i.e. interrupt properties
are tied to the completion queue) and adding complexity (e.g. exceptions
to not generating an interrupt when "busy"), it causes a race condition
under the following conditions:
 - guest OS has no outstanding interrupts
 - guest OS submits a single NVMe IO command
 - bhyve emulation processes the SQ and sets the "busy" flag
 - bhyve emulation submits the asynchronous IO to the backing storage
 - IO request to the backing storage completes before the SQ processing
   loop exits and doesn't generate an interrupt because the SQ is "busy"
 - bhyve emulation finishes processing the SQ and clears the "busy" flag

Fix is to remove the "busy" flag and generate an interrupt when the CQ
head and tail pointers do not match.

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

4 years agobhyve: use STAILQ in NVMe emulation
chuck [Fri, 27 Mar 2020 15:28:16 +0000 (15:28 +0000)]
bhyve: use STAILQ in NVMe emulation

Use the standard queue(3) macros instead of hand-crafted linked list
code.

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

4 years agobhyve: implement NVMe deallocate command
chuck [Fri, 27 Mar 2020 15:28:11 +0000 (15:28 +0000)]
bhyve: implement NVMe deallocate command

This adds support for the Dataset Management (DSM) command to the NVMe
emulation in general, and more specifically, for the deallocate
attribute (a.k.a. trim in the ATA protocol). If the backing storage for
the namespace supports delete (i.e. deallocate), setting the deallocate
attribute in a DSM will trim/delete the requested LBA ranges in the
underlying storage.

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

4 years agobhyve: refactor NVMe namespace initialization
chuck [Fri, 27 Mar 2020 15:28:05 +0000 (15:28 +0000)]
bhyve: refactor NVMe namespace initialization

Pass the struct pci_nvme_blockstore pointer for this namespace to the
namespace initialization function instead of only the desired eui64
value.

Minor functional change in that the code updates the eui64 value in the
blockstore.

Reviewed by: jhb, araujo
Approved by: jhb (maintainer)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D21838

4 years agobhyve: refactor NVMe PRP memcpy
chuck [Fri, 27 Mar 2020 15:28:00 +0000 (15:28 +0000)]
bhyve: refactor NVMe PRP memcpy

Add a "copy direction" parameter to nvme_prp_memcpy such that data can
be copied to the memory specified by the PRP entries (current behavior)
or copied from the PRP entries (new behavior). The upcoming deallocate
functionality will use the copy from capability.

Reviewed by: jhb, araujo
Approved by: jhb (maintainer)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D21837

4 years agoUse uint32_t where it is expected to be used. No functional change.
tuexen [Fri, 27 Mar 2020 11:08:11 +0000 (11:08 +0000)]
Use uint32_t where it is expected to be used. No functional change.

MFC after: 1 week

4 years agoChange default microphone level from 0 to 25.
hselasky [Fri, 27 Mar 2020 10:28:15 +0000 (10:28 +0000)]
Change default microphone level from 0 to 25.

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

4 years agoImprove USB audio mixer support for USB audio class 1 and 2.
hselasky [Fri, 27 Mar 2020 10:22:35 +0000 (10:22 +0000)]
Improve USB audio mixer support for USB audio class 1 and 2.
- make sure volume controls are correctly mapped to "pcm" and "rec" depending
  on how they deliver audio to the USB host.
- make sure there are no duplicate record selections.
- remove internal only mixer class type.
- don't add software volume controls for recording only.
- some minor mixer code cleanup.

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

4 years agoNow that there are no remaining users of ld.bfd, remove the ld subdir.
bdragon [Fri, 27 Mar 2020 01:12:11 +0000 (01:12 +0000)]
Now that there are no remaining users of ld.bfd, remove the ld subdir.

4 years agoBump for powerpc/powerpcspe switch to lld.
bdragon [Fri, 27 Mar 2020 01:03:48 +0000 (01:03 +0000)]
Bump for powerpc/powerpcspe switch to lld.

4 years ago[PowerPC] Switch powerpc and powerpcspe to lld
bdragon [Fri, 27 Mar 2020 01:00:03 +0000 (01:00 +0000)]
[PowerPC] Switch powerpc and powerpcspe to lld

Now that LLD 10 is out, and required patches have landed, we are now ready
to finally switch away from the ancient in-tree ld.bfd.

Special thanks to Fangrui Song for many hours of work on getting the
32-bit powerpc lld ready for prime-time.

Reviewed by: emaste (earlier revision), jhibbits
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D24111

4 years agoMerge ACPICA 20200326.
jkim [Fri, 27 Mar 2020 00:29:33 +0000 (00:29 +0000)]
Merge ACPICA 20200326.

4 years agomsun: swap words order instead of bits order on BIG ENDIAN
alfredo [Thu, 26 Mar 2020 18:50:54 +0000 (18:50 +0000)]
msun: swap words order instead of bits order on BIG ENDIAN

The "for" loop on big endian was inverting all the bits instead of
just the words

Issue reported by TestSuite (msun lib nan_test case)

Submitted by: Renato Riolino <renato.riolino@eldorado.org.br>
Submitted by: Fernando Valle <fernando.valle@eldorado.org.br>
Reviewed by: pfg, alfredo
Approved by: jhibbits (mentor)
Sponsored by: Eldorado Research Institute (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D23926

4 years agoDo not use macros in -width
0mp [Thu, 26 Mar 2020 17:58:52 +0000 (17:58 +0000)]
Do not use macros in -width

They do not expand.

MFC after: 1 day

4 years agoMerge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
dim [Thu, 26 Mar 2020 17:46:32 +0000 (17:46 +0000)]
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
llvmorg-10.0.0-0-gd32170dbd5b (aka 10.0.0 release).

PR: 244251
MFC after: 6 weeks
X-MFC-With: 358851

4 years agoInstall expected kyua docs.
brooks [Thu, 26 Mar 2020 17:34:17 +0000 (17:34 +0000)]
Install expected kyua docs.

The "kyua about" command assumes these files exist causing tests
supplied devel/kyua to fail.

Fix a bug defining the default KYUA_DOCDIR so the installed files can be
found.

Reported by: jenkins tests
Reviewed by: lwhsu
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D24187

4 years agoMerge commit 459e8e948 from llvm git (by Justin Hibbits):
dim [Thu, 26 Mar 2020 17:28:54 +0000 (17:28 +0000)]
Merge commit 459e8e948 from llvm git (by Justin Hibbits):

  [PowerPC]: Don't allow r0 as a target for LD_GOT_TPREL_L/32

  Summary:
  The linker is free to relax this (relocation R_PPC_GOT_TPREL16)
  against R_PPC_TLS, if it sees fit (initial exec to local exec). If r0
  is used, this can generate execution-invalid code (converts to 'addi
  %rX, %r0, FOO, which translates in PPC-lingo to li %rX, FOO). Forbid
  this instead.

  This fixes static binaries using locales on FreeBSD/powerpc (tested
  on FreeBSD/powerpcspe).

  Reviewed By: nemanjai
  Differential Revision: https://reviews.llvm.org/D76662

Requested by: jhibbits
MFC after: 6 weeks
X-MFC-With: 358851

4 years agoMerge commit f0990e104 from llvm git (by Justin Hibbits):
dim [Thu, 26 Mar 2020 17:27:41 +0000 (17:27 +0000)]
Merge commit f0990e104 from llvm git (by Justin Hibbits):

  [PowerPC]: e500 target can't use lwsync, use msync instead

  The e500 core has a silicon bug that triggers an illegal instruction
  program trap on any sync other than msync. Other cores will typically
  ignore illegal sync types, and the documentation even implies that
  the 'illegal' bits are ignored.

  Address this hardware deficiency by only using msync, like the PPC440.

  Differential Revision:  https://reviews.llvm.org/D76614

Requested by: jhibbits
MFC after: 6 weeks
X-MFC-With: 358851

4 years agocompat/linux/linux.h depends on queue.h since r353725.
markj [Thu, 26 Mar 2020 17:12:55 +0000 (17:12 +0000)]
compat/linux/linux.h depends on queue.h since r353725.

Sponsored by: The FreeBSD Foundation

4 years agoSimplify td_ucred handling in newnfs_connect().
markj [Thu, 26 Mar 2020 15:02:56 +0000 (15:02 +0000)]
Simplify td_ucred handling in newnfs_connect().

No functional change intended.

MFC after: 1 week

4 years agoRemove unused SYSINIT macros for capability rights.
markj [Thu, 26 Mar 2020 15:02:37 +0000 (15:02 +0000)]
Remove unused SYSINIT macros for capability rights.

Static rights are initialized in cap_rights_sysinit().

MFC after: 1 week

4 years ago[PowerPC64] Fix OPAL IPMI driver
luporl [Thu, 26 Mar 2020 12:17:49 +0000 (12:17 +0000)]
[PowerPC64] Fix OPAL IPMI driver

This change fixes a couple of issues with OPAL IPMI driver and
implements a mechanism to detect timeouts and discard old messages left
in receive queue, to avoid old messages from being confused with the
reply of new ones.

Reviewed by: jhibbits
Sponsored by: Eldorado Research Institute (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D24185

4 years agoFix typo.
ae [Thu, 26 Mar 2020 12:00:26 +0000 (12:00 +0000)]
Fix typo.

MFC after: 2 weeks

4 years agoAdd property-based filters for syslogd.
ae [Thu, 26 Mar 2020 11:54:25 +0000 (11:54 +0000)]
Add property-based filters for syslogd.

Property-based filters allow substring and regular expressions
(see re_format(7)) matching against various message attributes.
Filter specification starts with '#:' or ':' followed by three
comma-separated fields property, operator, "value". Value must be
double-quoted. A double quote and backslash must be escaped by a
blackslash.

Following properties are supported as test value:
o msg - body of the message received;
o programname - program name sent the message;
o hostname - hostname of message's originator;
o source - an alias for hostname.

Supported operators:
o contains - true if filter value is found as a substring of property;
o isequal - true if filter value is equal to property;
o startswith - true if property starts with filter value;
o regex - true if property matches basic regular expression defined
    in filter value;
o ereregex - true if property matches extended regular expression
    defined in filter value;

Operator may be prefixed by '!' to invert compare logic or by
'icase_' to make comparison function case insensitive.

Submitted by: Boris N. Lytochkin <lytboris at gmail com>
MFC after: 2 weeks
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D23468

4 years agoAdd HISTORY sections to log(3) man page
carlavilla [Thu, 26 Mar 2020 11:24:43 +0000 (11:24 +0000)]
Add HISTORY sections to log(3) man page

PR: 240265
Submitted by: gbergling@gmail.com
Approved by: bcr@(mentor), imp@
MFC after: 1 day
Differential Revision: https://reviews.freebsd.org/D24148

4 years agoRemove deprecated options.
netchild [Thu, 26 Mar 2020 09:23:16 +0000 (09:23 +0000)]
Remove deprecated options.

4 years agoStop building libl and liby
manu [Thu, 26 Mar 2020 08:23:09 +0000 (08:23 +0000)]
Stop building libl and liby

Those libs aren't needed anymore so stop building them for the bootstrap tools
or the compat libs.

Reviewed by: bapt, emaste
X-Differential Revision: D24171

4 years agoBe more intelligent when classifying USB audio terminal types, so that we
hselasky [Thu, 26 Mar 2020 07:52:04 +0000 (07:52 +0000)]
Be more intelligent when classifying USB audio terminal types, so that we
don't end up using SOUND_MIXER_VOLUME for all undefined types.

MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agoMake mute controls available for USB audio mixers.
hselasky [Thu, 26 Mar 2020 07:46:16 +0000 (07:46 +0000)]
Make mute controls available for USB audio mixers.

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

4 years agoFactor out USB audio mixer value range check.
hselasky [Thu, 26 Mar 2020 07:42:36 +0000 (07:42 +0000)]
Factor out USB audio mixer value range check.

MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agoAvoid scaling USB audio mixer values twice.
hselasky [Thu, 26 Mar 2020 07:37:00 +0000 (07:37 +0000)]
Avoid scaling USB audio mixer values twice.

MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agoExpand generic subword atomic primitives
cem [Wed, 25 Mar 2020 23:12:43 +0000 (23:12 +0000)]
Expand generic subword atomic primitives

The goal of this change is to make the atomic_load_acq_{8,16},
atomic_testandset{,_acq}_long, and atomic_testandclear_long primitives
available in MI-namespace.

The second goal is to get this draft out of my local tree, as anything that
requires a full tinderbox is a big burden out of tree.  MD specifics can be
refined individually afterwards.

The generic implementations may not be ideal for your architecture; feel
free to implement better versions.  If no subword_atomic definitions are
needed, the include can be removed from your arch's machine/atomic.h.
Generic definitions are guarded by defined macros of the same name.  To
avoid picking up conflicting generic definitions, some macro defines are
added to various MD machine/atomic.h to register an existing implementation.

Include _atomic_subword.h in arm and arm64 machine/atomic.h.

For some odd reason, KCSAN only generates some versions of primitives.
Generate the _acq variants of atomic_load.*_8, atomic_load.*_16, and
atomic_testandset.*_long.  There are other questionably disabled primitives,
but I didn't run into them, so I left them alone.  KCSAN is only built for
amd64 in tinderbox for now.

Add atomic_subword implementations of atomic_load_acq_{8,16} implemented
using masking and atomic_load_acq_32.

Add generic atomic_subword implementations of atomic_testandset_long(),
atomic_testandclear_long(), and atomic_testandset_acq_long(), using
atomic_fcmpset_long() and atomic_fcmpset_acq_long().

On x86, add atomic_testandset_acq_long as an alias for
atomic_testandset_long.

Reviewed by: kevans, rlibby (previous versions both)
Differential Revision: https://reviews.freebsd.org/D22963

4 years agoso_reuseport_lb_test: correct setsockopt parameter size
alfredo [Wed, 25 Mar 2020 20:20:08 +0000 (20:20 +0000)]
so_reuseport_lb_test: correct setsockopt parameter size

Change type of variable used in setsocketopt so correct size of
option is passed.

Test failure was identified when running the test on PowerPC64,
and the following error message was seen:

"bind () failed: Address already in use"

Submitted by: Fernando Valle <fernando.valle@eldorado.org.br>
Reviewed by: melifaro, adalava
Approved by: jhibbits (mentor)
Sponsored by: Eldorado Research Institute (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D24164

4 years agoFix pkgfs stat so it satisfies libsecureboot
sjg [Wed, 25 Mar 2020 19:12:19 +0000 (19:12 +0000)]
Fix pkgfs stat so it satisfies libsecureboot

We need a valid st_dev, st_ino and st_mtime
to correctly track which files have been verified
and to update our notion of time.

ve_utc_set(): ignore utc if it would jump our current time
by more than VE_UTC_MAX_JUMP (20 years).

Allow testing of install command via userboot.
Need to fix its stat implementation too.

bhyveload also needs stat fixed - due to change to userboot.h

Call ve_error_get() from vectx_close() when hash is wrong.

Track the names of files we have hashed into pcr

For the purposes of measured boot, it is important
to be able to reproduce the hash reflected in
loader.ve.pcr
so loader.ve.hashed provides a list of names in the order they
were added.

Reviewed by: imp
MFC after: 1 week
Sponsored by: Juniper Networks
Differential Revision: https://reviews.freebsd.org//D24027

4 years agoRemove an optimization, which was incorrect a couple of times and
tuexen [Wed, 25 Mar 2020 18:20:37 +0000 (18:20 +0000)]
Remove an optimization, which was incorrect a couple of times and
therefore doesn't seem worth to be there.
In this case COOKIE where not retransmitted anymore, when the
socket was already closed.

MFC after: 1 week

4 years agoImprove consistency in debug output.
tuexen [Wed, 25 Mar 2020 18:14:12 +0000 (18:14 +0000)]
Improve consistency in debug output.

MFC after: 1 week

4 years agoMFOpenZFS: ZVOLs should not be allowed to have children
freqlabs [Wed, 25 Mar 2020 15:56:18 +0000 (15:56 +0000)]
MFOpenZFS: ZVOLs should not be allowed to have children

zfs create, receive and rename can bypass this hierarchy rule. Update
both userland and kernel module to prevent this issue and use pyzfs
unit tests to exercise the ioctls directly.

Note: this commit slightly changes zfs_ioc_create() ABI. This allow to
differentiate a generic error (EINVAL) from the specific case where we
tried to create a dataset below a ZVOL (ZFS_ERR_WRONG_PARENT).

Reviewed-by: Paul Dagnelie <pcd@delphix.com>
Reviewed-by: Matt Ahrens <mahrens@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tom Caputi <tcaputi@datto.com>
Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
Approved by: mav (mentor)
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
openzfs/zfs@d8d418ff0cc90776182534bce10b01e9487b63e4

4 years agoRevert https://svnweb.freebsd.org/changeset/base/357829
tuexen [Wed, 25 Mar 2020 15:29:01 +0000 (15:29 +0000)]
Revert https://svnweb.freebsd.org/changeset/base/357829

This introduces a regression reported by koobs@ when running a pyhton
test suite on a loaded system.

This patch resulted in a failing accept() call, when the association
was setup and gracefully shutdown by the peer before accept was called.
So the following packetdrill script would fail:

+0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
+0.0 bind(3, ..., ...) = 0
+0.0 listen(3, 1) = 0
+0.0 < sctp: INIT[flgs=0, tag=1, a_rwnd=15000, os=1, is=1, tsn=1]
+0.0 > sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=..., os=..., is=..., tsn=1, ...]
+0.1 < sctp: COOKIE_ECHO[flgs=0, len=..., val=...]
+0.0 > sctp: COOKIE_ACK[flgs=0]
+0.0 < sctp: DATA[flgs=BE, len=116, tsn=1, sid=0, ssn=0, ppid=0]
+0.0 > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
+0.0 < sctp: SHUTDOWN[flgs=0, cum_tsn=0]
+0.0 > sctp: SHUTDOWN_ACK[flgs=0]
+0.0 < sctp: SHUTDOWN_COMPLETE[flgs=0]
+0.0 accept(3, ..., ...) = 4
+0.0 close(3) = 0
+0.0 recv(4, ..., 4096, 0) = 100
+0.0 recv(4, ..., 4096, 0) = 0
+0.0 close(4) = 0

Reported by: koops@