]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 months agoMerge commit '850ef5ae11d69ea3381bd310f564f025fc8caea3'
Gregory Neil Shapiro [Wed, 31 Jan 2024 23:53:48 +0000 (23:53 +0000)]
Merge commit '850ef5ae11d69ea3381bd310f564f025fc8caea3'

Merge vendor sendmail 8.18.1 into HEAD

4 months agoImport sendmail 8.18.1
Gregory Neil Shapiro [Wed, 31 Jan 2024 23:37:30 +0000 (23:37 +0000)]
Import sendmail 8.18.1

4 months agopmap: Convert boolean_t to bool.
John Baldwin [Wed, 31 Jan 2024 22:48:26 +0000 (14:48 -0800)]
pmap: Convert boolean_t to bool.

Reviewed by: kib (older version)
Differential Revision: https://reviews.freebsd.org/D39921

4 months agobsdinstall: separate out dist selection in prep for pkgbase support
Brad Davis [Fri, 26 Jan 2024 17:46:46 +0000 (10:46 -0700)]
bsdinstall: separate out dist selection in prep for pkgbase support

No functional change intended.

Approved by: asiciliano
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D43621

4 months agoperiodic: fix a typo in a comment
Enji Cooper [Wed, 31 Jan 2024 20:45:32 +0000 (12:45 -0800)]
periodic: fix a typo in a comment

No functional change.

4 months agocsu: add crtbrand.o dependency on sys/param.h
Ed Maste [Fri, 12 Jan 2024 15:01:49 +0000 (10:01 -0500)]
csu: add crtbrand.o dependency on sys/param.h

__FreeBSD_version is recorded in *crt1.o and crti.o via crtbrand.o.  Add
an explicit dependency to pick up __FreeBSD_version bumps.

Additional changes are required to fully plumb *crt1.o dependencies
through the build.

Reported by: bapt
Reviewed by: bapt
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D43417

4 months agotools/build/make.py: Avoid Python 3.7+ subprocess.run capture_output
Jessica Clarke [Wed, 31 Jan 2024 19:45:59 +0000 (19:45 +0000)]
tools/build/make.py: Avoid Python 3.7+ subprocess.run capture_output

This is just a convenient alias for setting stdout and stderr to PIPE,
so substitute it for that to be compatible with Python 3.6.

Fixes: 69cfdc81ea7b ("tools/build/make.py: Keep bootstrapped bmake binary up-to-date")

4 months agoacpica: Fix build with ACPICA 20230331 and later
Jung-uk Kim [Wed, 31 Jan 2024 18:41:29 +0000 (13:41 -0500)]
acpica: Fix build with ACPICA 20230331 and later

ACPICA is using flexible arrays since 20230331 and it broke aarch64
build.

--- acpi_iort.o ---
/usr/src/sys/arm64/acpica/acpi_iort.c:103:4: error: field 'data' with
variable sized type 'union (unnamed union at
/usr/src/sys/arm64/acpica/acpi_iort.c:98:2)' not at the end of a struct
or class is a GNU extension [-Werror,-Wgnu-variable-sized-type-not-at-end]
  103 |         } data;
      |           ^

Reported by: bapt
Tested by: bapt

4 months agointro.9: minor changes
Graham Perrin [Sun, 6 Aug 2023 17:34:03 +0000 (18:34 +0100)]
intro.9: minor changes

A correction: 'and' -> 'an'. Plus, several tweaks for brevity or
clarity.

Reviewed by: mhorne
MFC after: 3 days
Pull Request: https://github.com/freebsd/freebsd-src/pull/813

4 months agotimerfd: Move kern_timerfd_* prototypes to <sys/syscallsubr.h>
John Baldwin [Wed, 31 Jan 2024 17:15:58 +0000 (09:15 -0800)]
timerfd: Move kern_timerfd_* prototypes to <sys/syscallsubr.h>

4 months agovirtio: Add more device IDs from the specification
Bryan Venteicher [Wed, 31 Jan 2024 05:02:59 +0000 (23:02 -0600)]
virtio: Add more device IDs from the specification

4 months agoacpica: Import ACPICA 20230628
Jung-uk Kim [Tue, 30 Jan 2024 21:49:20 +0000 (16:49 -0500)]
acpica: Import ACPICA 20230628

(cherry picked from commit ef3ba9d625927fd4592a8c071698a562821485bd)

4 months agoacpica: Import ACPICA 20230331
Jung-uk Kim [Tue, 30 Jan 2024 21:43:45 +0000 (16:43 -0500)]
acpica: Import ACPICA 20230331

(cherry picked from commit 8e013e1e3b81740266738226667431cf5c28b17a)

4 months agocxgbe tom: Enable ULP_MODE_TCPDDP on demand
John Baldwin [Wed, 31 Jan 2024 00:41:43 +0000 (16:41 -0800)]
cxgbe tom: Enable ULP_MODE_TCPDDP on demand

Most ULP modes in cxgbe's TOE are enabled on the fly when a protocol
is needed (e.g. ULP_MODE_ISCSI is enabled by cxgbei when offloading a
connection using iSCSI, and ULP_MODE_TLS is enabled when RX TLS keys
are programmed for a TOE connection).  The one exception to this is
ULP_MODE_TCPDDP.

Currently the cxgbe driver enables ULP_MODE_TCPDDP when a TOE
connection is first created.  However, since DDP connections cannot be
converted to other connection types, this requires some special
handling in the driver.  For example, iSCSI daemons use the SO_NO_DDP
socket option to ensure TOE connections use ULP_MODE_NONE so they can
be converted to ULP_MODE_ISCSI.  Similarly, using TLS receive offload
(ULP_MODE_TLS) requires disabling TCP DDP for new connections by
default.

This commit changes cxgbe to instead switch a connection from
ULP_MODE_NONE to ULP_MODE_TCPDDP when a connection first attempts to
use TCP DDP via aio_read(2).  This permits connections to always start
as ULP_MODE_NONE and switch to a protocol-specific mode as needed.

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

4 months agocxgbe tom: Limit TOE connections to 2 reassembly islands always
John Baldwin [Wed, 31 Jan 2024 00:41:23 +0000 (16:41 -0800)]
cxgbe tom: Limit TOE connections to 2 reassembly islands always

Previously this was only limited on T6 cards to support switching from
ULP_MODE_NONE to ULP_MODE_TLS.  To support switching to
ULP_MODE_TCPDDP, enable this for all adapters.

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

4 months agocxgbe: Add counters for POSIX async I/O requests handled by the driver
John Baldwin [Wed, 31 Jan 2024 00:40:31 +0000 (16:40 -0800)]
cxgbe: Add counters for POSIX async I/O requests handled by the driver

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

4 months agosyscallsubr.h: Sort kern_membarrier prototype alphabetically
John Baldwin [Wed, 31 Jan 2024 00:38:29 +0000 (16:38 -0800)]
syscallsubr.h: Sort kern_membarrier prototype alphabetically

4 months agozfs: merge openzfs/zfs@2e6b3c4d9
Martin Matuska [Tue, 30 Jan 2024 22:52:29 +0000 (23:52 +0100)]
zfs: merge openzfs/zfs@2e6b3c4d9

Notable upstream pull request merges:
 #15793 401c3563d libzfs: use zfs_strerror() in place of strerror()
 #15793 692f0daba libzfs: make userquota_propname_decode threadsafe
 #15798 0cbf13529 libnvpair.c: replace strstr() with strchr() for a single
                  character
 #15812 78e8c1f84 Remove list_size struct member from list implementation
 #15816 aeb33776f Update vdev devid and physpath if changed between imports
 #15818 8161b7327 Don't assert mg_initialized due to device addition race
 #15823 c3fd7a521 Update man pages to time(1) from time(2)
 #15825 884a48d99 zpool wait: print timestamp before the header

Obtained from: OpenZFS
OpenZFS commit: 2e6b3c4d9453360a351af6148386360a3a7209b3

4 months agosys/mount.h: use __inline
Konstantin Belousov [Tue, 30 Jan 2024 22:14:25 +0000 (00:14 +0200)]
sys/mount.h: use __inline

instead of plain inline, for C89

Reported by: antoine
Sponsored by: The FreeBSD Foundation
MFC after: 3 days

4 months agoshare/man: Add mandoc.db files to METALOG
Jessica Clarke [Tue, 30 Jan 2024 22:17:34 +0000 (22:17 +0000)]
share/man: Add mandoc.db files to METALOG

Otherwise these are omitted for -DNO_ROOT builds, whether for disk
images or dist tarballs.

Reviewed by: brooks, emaste
Differential Revision: https://reviews.freebsd.org/D43676

4 months agoetc: Set DISTBASE during distribute for sub-makes
Jessica Clarke [Tue, 30 Jan 2024 22:17:28 +0000 (22:17 +0000)]
etc: Set DISTBASE during distribute for sub-makes

This is normally done by bsd.subdir.mk in its default distribute target,
but since etc overrides it we don't get that behaviour. Currently it's
not needed, but share/man's makedb (recursed into by etc's afterinstall)
will need it in the following commit. Technically this is only needed
for install, but do this for distribution too for completeness and
consistency.

Reviewed by: brooks, emaste
Differential Revision: https://reviews.freebsd.org/D43675

4 months agopf: uncomment counter asserts after mem leak fix
Igor Ostapenko [Tue, 30 Jan 2024 21:04:57 +0000 (22:04 +0100)]
pf: uncomment counter asserts after mem leak fix

Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D43657

4 months agoriscv: Remove the unused riscv64_cpu driver
Jessica Clarke [Tue, 30 Jan 2024 20:33:30 +0000 (20:33 +0000)]
riscv: Remove the unused riscv64_cpu driver

This is a repeat of 63bf2d735ca3 ("Remove the unused arm64_cpu driver.")
for RISC-V, which copied the defunct code from arm64 with no changes
beyond substituting riscv64 for arm64, and made no use of it elsewhere.
It has thus always been entirely superfluous.

Reviewed by: mhorne
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D43672

4 months agochflags(1): obey siginfo request on chflagsat(2) failure
Konstantin Belousov [Tue, 30 Jan 2024 18:07:59 +0000 (20:07 +0200)]
chflags(1): obey siginfo request on chflagsat(2) failure

Note that the error diagnostic can now be printed both to stderr due to
the absence of the -f flag and to stdout due to SIGINFO simultaneously.

Noted and reviewed by: jrtc27
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 months agoRELNOTES: document powerd enable on RPI images
Mike Karels [Tue, 30 Jan 2024 20:16:51 +0000 (14:16 -0600)]
RELNOTES: document powerd enable on RPI images

Note that powerd(8) is enabled in /etc/rc.conf.

4 months agosockets: garbage collect SS_ISCONFIRMING
Gleb Smirnoff [Tue, 30 Jan 2024 18:09:48 +0000 (10:09 -0800)]
sockets: garbage collect SS_ISCONFIRMING

Fixes: 8df32b19dee92b5eaa4b488ae78dca6accfcb38e

4 months agochflags(1): Fix -f option
Ricardo Branco [Mon, 29 Jan 2024 22:17:47 +0000 (23:17 +0100)]
chflags(1): Fix -f option

As stated in the man page, -f must not emit warning on error, and must
not set the utility exit code.

PR: 276723
Github PR: https://github.com/freebsd/freebsd-src/pull/1088
Reviewed by: imp, kib
MFC after: 1 week

4 months agosnd_hdspe(4): Per device sysctl for sample rate.
Florian Walpen [Tue, 30 Jan 2024 15:07:57 +0000 (15:07 +0000)]
snd_hdspe(4): Per device sysctl for sample rate.

Some hardware setups require a specific sample rate due to devices being
connected to digital ports (AES, S/PDIF, ADAT). Add a per device sysctl
"sample_rate" to let the user override sample rate requests from the pcm
infrastructure, when needed.

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

4 months agoscsi_cd: Remove commented-out code
Mark Johnston [Sun, 21 Jan 2024 15:19:42 +0000 (10:19 -0500)]
scsi_cd: Remove commented-out code

This is left over from before the implementation of asynchronous media
probing, which was committed in dd78f43259ef
("scsi_cd: make the media check asynchronous") quite a while ago now.

No functional change intended.

MFC after: 1 week
Reviewed by: imp, avg
Differential Revision: https://reviews.freebsd.org/D43650

4 months agoscsi_cd: Maintain a periph reference during media checks
Mark Johnston [Tue, 30 Jan 2024 01:01:12 +0000 (20:01 -0500)]
scsi_cd: Maintain a periph reference during media checks

Otherwise nothing prevents the asynchronous media check state machine
from running after the periph has been destroyed, which can result in a
double free.  Acquire the reference even when performing a synchronous
check, since that doesn't hurt and keeps things simpler.

PR: 276251
Reviewed by: imp
Fixes: dd78f43259ef ("scsi_cd: make the media check asynchronous")
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D43525

4 months agoscsi_cd: Use a bool for the second parameter of cdcheckmedia()
Mark Johnston [Tue, 30 Jan 2024 01:00:13 +0000 (20:00 -0500)]
scsi_cd: Use a bool for the second parameter of cdcheckmedia()

No functional change intended.

Reviewed by: imp
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D43525

4 months agoAdd uzsolt@ to committers
Zsolt Udvari [Sat, 27 Jan 2024 18:53:51 +0000 (19:53 +0100)]
Add uzsolt@ to committers

Committer's Guide, steps for new committers, step 5.

Approved by: bofh (mentor), diizzy (mentor)
Differential Revision: https://reviews.freebsd.org/D43630

4 months agordmsr_safe/wrmsr_safe: handle pcb_onfault nesting
Andriy Gapon [Tue, 30 Jan 2024 06:45:01 +0000 (08:45 +0200)]
rdmsr_safe/wrmsr_safe: handle pcb_onfault nesting

rdmsr_safe and wrmsr_safe can be called while pcb_onfault is already
set, so the functions are modified to preserve the handler rather than
resetting it before returning.

One case where that happens is when AMD microcode update routine
is executed on a stack where copyin / copyout was already active.

Here is a sample panic message from a crash caused by resetting the
handler:

  <118>Updating CPU Microcode...

  Fatal trap 12: page fault while in kernel mode
  cpuid = 3; apic id = 03
  fault virtual address   = 0x11ed0de6000
  fault code              = supervisor write data, page not present
  instruction pointer     = 0x20:0xffffffff80c2df03
  stack pointer           = 0x28:0xfffffe01ce4a4c70
  frame pointer           = 0x28:0xfffffe01ce4a4c70
  code segment            = base 0x0, limit 0xfffff, type 0x1b
                          = DPL 0, pres 1, long 1, def32 0, gran 1
  processor eflags        = interrupt enabled, resume, IOPL = 0
  current process         = 117 (logger)
  trap number             = 12
  panic: page fault
  cpuid = 3
  time = 1681462027
  KDB: stack backtrace:
  db_trace_self_wrapper() at 0xffffffff80615deb = db_trace_self_wrapper+0x2b/frame 0xfffffe01ce4a4830
  kdb_backtrace() at 0xffffffff80943c77 = kdb_backtrace+0x37/frame 0xfffffe01ce4a48e0
  vpanic() at 0xffffffff808f5fe5 = vpanic+0x185/frame 0xfffffe01ce4a4940
  panic() at 0xffffffff808f5da3 = panic+0x43/frame 0xfffffe01ce4a49a0
  trap_fatal() at 0xffffffff80c31849 = trap_fatal+0x379/frame 0xfffffe01ce4a4a00
  trap_pfault() at 0xffffffff80c318b5 = trap_pfault+0x65/frame 0xfffffe01ce4a4a60
  trap() at 0xffffffff80c30f5f = trap+0x29f/frame 0xfffffe01ce4a4b80
  trap_check() at 0xffffffff80c31c29 = trap_check+0x29/frame 0xfffffe01ce4a4ba0
  calltrap() at 0xffffffff80c07fd8 = calltrap+0x8/frame 0xfffffe01ce4a4ba0
  --- trap 0xc, rip = 0xffffffff80c2df03, rsp = 0xfffffe01ce4a4c70, rbp = 0xfffffe01ce4a4c70 ---
  copyout_nosmap_std() at 0xffffffff80c2df03 = copyout_nosmap_std+0x63/frame 0xfffffe01ce4a4c70
  uiomove_faultflag() at 0xffffffff8095f0d5 = uiomove_faultflag+0xe5/frame 0xfffffe01ce4a4cb0
  uiomove() at 0xffffffff8095efeb = uiomove+0xb/frame 0xfffffe01ce4a4cc0
  pipe_read() at 0xffffffff80968860 = pipe_read+0x230/frame 0xfffffe01ce4a4d30
  dofileread() at 0xffffffff809653cb = dofileread+0x8b/frame 0xfffffe01ce4a4d80
  sys_read() at 0xffffffff80964fa0 = sys_read+0xc0/frame 0xfffffe01ce4a4df0
  amd64_syscall() at 0xffffffff80c3221a = amd64_syscall+0x18a/frame 0xfffffe01ce4a4f30
  fast_syscall_common() at 0xffffffff80c088eb = fast_syscall_common+0xf8/frame 0xfffffe01ce4a4f30
  --- syscall (3, FreeBSD ELF64, read), rip = 0x11ece41cfaa, rsp = 0x11ecbec4908, rbp = 0x11ecbec4920 ---
  Uptime: 41s

And another one:

  Fatal trap 12: page fault while in kernel mode
  cpuid = 4; apic id = 04
  fault virtual address   = 0x800a22000
  fault code              = supervisor write data, page not present
  instruction pointer     = 0x20:0xffffffff80b2c7ca
  stack pointer           = 0x28:0xfffffe01c55b5480
  frame pointer           = 0x28:0xfffffe01c55b5480
  code segment            = base 0x0, limit 0xfffff, type 0x1b
                          = DPL 0, pres 1, long 1, def32 0, gran 1
  processor eflags        = interrupt enabled, resume, IOPL = 0
  current process         = 68418 (pfctl)
  trap number             = 12
  panic: page fault
  cpuid = 4
  time = 1625184463
  KDB: stack backtrace:
  db_trace_self_wrapper() at 0xffffffff805c1e8b = db_trace_self_wrapper+0x2b/frame 0xfffffe01c55b5040
  kdb_backtrace() at 0xffffffff808874b7 = kdb_backtrace+0x37/frame 0xfffffe01c55b50f0
  vpanic() at 0xffffffff808449d8 = vpanic+0x188/frame 0xfffffe01c55b5150
  panic() at 0xffffffff808445f3 = panic+0x43/frame 0xfffffe01c55b51b0
  trap_fatal() at 0xffffffff80b300a5 = trap_fatal+0x375/frame 0xfffffe01c55b5210
  trap_pfault() at 0xffffffff80b30180 = trap_pfault+0x80/frame 0xfffffe01c55b5280
  trap() at 0xffffffff80b2f729 = trap+0x289/frame 0xfffffe01c55b5390
  trap_check() at 0xffffffff80b304d9 = trap_check+0x29/frame 0xfffffe01c55b53b0
  calltrap() at 0xffffffff80b0bb28 = calltrap+0x8/frame 0xfffffe01c55b53b0
  --- trap 0xc, rip = 0xffffffff80b2c7ca, rsp = 0xfffffe01c55b5480, rbp = 0xfffffe01c55b5480 ---
  copyout_nosmap_std() at 0xffffffff80b2c7ca = copyout_nosmap_std+0x15a/frame 0xfffffe01c55b5480
  pfioctl() at 0xffffffff85539358 = pfioctl+0x4d28/frame 0xfffffe01c55b5940
  devfs_ioctl() at 0xffffffff807176cf = devfs_ioctl+0xcf/frame 0xfffffe01c55b59a0
  VOP_IOCTL_APV() at 0xffffffff80bb26e2 = VOP_IOCTL_APV+0x92/frame 0xfffffe01c55b59c0
  VOP_IOCTL() at 0xffffffff80928014 = VOP_IOCTL+0x34/frame 0xfffffe01c55b5a10
  vn_ioctl() at 0xffffffff80923330 = vn_ioctl+0xc0/frame 0xfffffe01c55b5b00
  devfs_ioctl_f() at 0xffffffff80717bbe = devfs_ioctl_f+0x1e/frame 0xfffffe01c55b5b20
  fo_ioctl() at 0xffffffff808abc6b = fo_ioctl+0xb/frame 0xfffffe01c55b5b30
  kern_ioctl() at 0xffffffff808abc01 = kern_ioctl+0x1d1/frame 0xfffffe01c55b5b80
  sys_ioctl() at 0xffffffff808ab982 = sys_ioctl+0x132/frame 0xfffffe01c55b5c50
  syscallenter() at 0xffffffff80b30cc9 = syscallenter+0x159/frame 0xfffffe01c55b5ca0
  amd64_syscall() at 0xffffffff80b309a5 = amd64_syscall+0x15/frame 0xfffffe01c55b5d30
  fast_syscall_common() at 0xffffffff80b0c44e = fast_syscall_common+0xf8/frame 0xfffffe01c55b5d30

PR: 276426
Reviewed by: kib, markj
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D43639

4 months agohostname(1): Add test cases
Lin Lee [Wed, 17 Jan 2024 04:30:29 +0000 (12:30 +0800)]
hostname(1): Add test cases

Sponsored by: The FreeBSD Foundation
Pull Request: https://github.com/freebsd/freebsd-src/pull/1069

4 months agostyle(9): Note larger divergence than implied
Warner Losh [Mon, 29 Jan 2024 23:57:19 +0000 (16:57 -0700)]
style(9): Note larger divergence than implied

Times have changed, and we've diverged somewhat from the original style
guide, while still keeping much of the flavor and flair of its spirit as
the C language has evolved over the last 30 years since 4.4 was
released.

Sponsored by: Netflix

4 months agostyle(9): Remove $FreeBSD$ recommendation.
Minsoo Choo [Mon, 29 Jan 2024 23:53:31 +0000 (16:53 -0700)]
style(9): Remove $FreeBSD$ recommendation.

Now that stable/12 is now EOL, there's no reason to do this. They've
been proactively removed from the tree.

Reviewed by: imp, lwhsu
Differential Revision: https://reviews.freebsd.org/D43641

4 months agologin_cap.h: Remove LOGIN_DEFPRI
Olivier Certner [Thu, 25 Jan 2024 22:25:10 +0000 (23:25 +0100)]
login_cap.h: Remove LOGIN_DEFPRI

This is an implementation detail which is likely to become irrelevant in
the future, as we move to not resetting the priority if the
corresponding capability is not present in the configuration file
('/etc/login.conf').

GitHub's code search and Google show no use of this public constant, and
it doesn't exist in OpenBSD and NetBSD.

So, remove this definition and its sole use in-tree.

PR:                     276570 (exp-run)
Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D43609

4 months agologin_cap.h: Remove LOGIN_DEFUMASK
Olivier Certner [Thu, 25 Jan 2024 22:10:40 +0000 (23:10 +0100)]
login_cap.h: Remove LOGIN_DEFUMASK

This public constant has not been used in-tree since 1997 (this was
noticed while working on previous commit "setusercontext(): umask: Set
it only once (in the common case)").

Since it was an implementation detail and GitHub's code search and
Google show no use of this symbol today, simply remove it.

PR:                     276570 (exp-run)
Reviewed by:            emaste, kib (earlier version, then part of D40344)
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D43608

4 months agosetusercontext(): Set priority from '~/.login_conf' as well
Olivier Certner [Tue, 30 May 2023 15:14:50 +0000 (17:14 +0200)]
setusercontext(): Set priority from '~/.login_conf' as well

Setting the process priority is done only when the current process'
effective UID corresponds to that for which context is to be set.
Consequently, setting priority is done with appropriate credentials and
will fail if the target user tries to raise it unduly via his
'~/.login_conf'.

PR:                     271751
Reviewed by:            kib, Andrew Gierth <andrew_tao173.riddles.org.uk>
Approved by:            emaste (mentor)
MFC after:              3 days
Relnotes:               yes
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40352

4 months agologin.conf(5): Document priority's special value 'inherit'
Olivier Certner [Wed, 21 Jun 2023 08:39:47 +0000 (10:39 +0200)]
login.conf(5): Document priority's special value 'inherit'

Reviewed by:            emaste, yuripv (older version)
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40691

4 months agosetclasspriority(): New possible value 'inherit'
Olivier Certner [Wed, 21 Jun 2023 08:53:37 +0000 (10:53 +0200)]
setclasspriority(): New possible value 'inherit'

It indicates to the login.conf machinery (setusercontext() /
setclasscontext()) to leave priority alone, effectively inheriting it
from the parent process.

PR:                     271749
Reviewed by:            emaste, yuripv
Approved by:            emaste (mentor)
MFC after:              3 days
Relnotes:               yes
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40690

4 months agosetusercontext(): Move priority setting in new setclasspriority()
Olivier Certner [Mon, 29 May 2023 17:09:36 +0000 (19:09 +0200)]
setusercontext(): Move priority setting in new setclasspriority()

In preparation for setting priorities from '~/.login_conf' and to ease
reading of setusercontext().

No functional change.

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40350

4 months agologin.conf(5): Document priority's default and possible values
Olivier Certner [Wed, 21 Jun 2023 08:39:15 +0000 (10:39 +0200)]
login.conf(5): Document priority's default and possible values

Priority is reset to 0 if not explicitly specified.

While here, be more explicit about what "Initial priority (nice) level"
means and document that it is possible to set real-time or idle class'
priorities with this capability.

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40689

4 months agosetusercontext(): Better error messages when priority is not set correctly
Olivier Certner [Mon, 29 May 2023 16:39:04 +0000 (18:39 +0200)]
setusercontext(): Better error messages when priority is not set correctly

Polish the syslog messages to contain readily useful information.

Behavior of capability 'priority' is inconsistent with what is done for
all other contexts: 'umask', 'cpumask', resource limits, etc., where an
absence of capability means to inherit the value.  It is currently
preserved for compatibility, but is subject to change on a future major
release.

Reviewed by:            emaste, kib (older version)
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40349

4 months agologin.conf(5): Default values: Rename column, elaborate on absence of such
Olivier Certner [Mon, 29 May 2023 14:06:37 +0000 (16:06 +0200)]
login.conf(5): Default values: Rename column, elaborate on absence of such

Column "Notes" in fact only contains default values for capabilities, so
make this clear by renaming it to "Default".

Add a small introductory text mentioning it, and what an absence of
default value means (inheritance).

PR:                     271748
Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40347

4 months agosetlogincontext(): Comply to style(9)
Olivier Certner [Thu, 25 May 2023 14:29:22 +0000 (16:29 +0200)]
setlogincontext(): Comply to style(9)

Remove indentation by inverting the big 'if (lc)' and using 'return'.
Use explicit binary operators to produce booleans.

Reviewed by:            emaste, kib, dchagin
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40346

4 months agologin.conf(5): Document umask's special value 'inherit'
Olivier Certner [Wed, 21 Jun 2023 08:42:44 +0000 (10:42 +0200)]
login.conf(5): Document umask's special value 'inherit'

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40688

4 months agosetclassumask(): Accept 'inherit' as a value
Olivier Certner [Tue, 20 Jun 2023 19:41:04 +0000 (21:41 +0200)]
setclassumask(): Accept 'inherit' as a value

'inherit' explicitly indicates that the umask should not be changed.

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Relnotes:               yes
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40687

4 months agosetusercontext(): Set umask in a separate function, setclassumask()
Olivier Certner [Tue, 20 Jun 2023 16:46:31 +0000 (18:46 +0200)]
setusercontext(): Set umask in a separate function, setclassumask()

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40686

4 months agologin_cap(3): Document login_getcapenum()
Olivier Certner [Tue, 20 Jun 2023 20:09:57 +0000 (22:09 +0200)]
login_cap(3): Document login_getcapenum()

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40685

4 months agoNew login_getcapenum(): Allows to read named enum values
Olivier Certner [Tue, 20 Jun 2023 16:41:32 +0000 (18:41 +0200)]
New login_getcapenum(): Allows to read named enum values

Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40684

4 months agologin.conf(5): umask has no default value
Olivier Certner [Thu, 25 May 2023 12:41:03 +0000 (14:41 +0200)]
login.conf(5): umask has no default value

The umask is simply left unchanged if no explicit value is specified in
the login class capabilities database.

PR:                     271747
Reviewed by:            emaste
Approved by:            emaste (mentor)
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40345

4 months agosetusercontext(): umask: Set it only once (in the common case)
Olivier Certner [Thu, 25 May 2023 12:18:45 +0000 (14:18 +0200)]
setusercontext(): umask: Set it only once (in the common case)

Simplify the code and make it more coherent (umask was the only context
setting not modified by setlogincontext() directly).

Preserve the current behavior of not changing the umask if none is
specified in the login class capabilities database, but without the
superfluous umask() dance.  (The only exception to this is that
a special value no user is likely to input in the database now stands
for no specification.)

If some user has a 'umask' override in its '~/.login_conf', the umask
will still be set twice as before (as is the case for all other context
settings overriden in '~/.login_conf').

Log a warning in case of an invalid umask specification.

This change makes it apparent that the value of LOGIN_DEFUMASK doesn't
matter.  It will be removed in a subsequent commit.

PR:                     271747
Reviewed by:            emaste, kib (earlier version)
Approved by:            emaste
MFC after:              3 days
Sponsored by:           Kumacom SAS
Differential Revision:  https://reviews.freebsd.org/D40344

4 months agoopen(2): describe *at behavior for dirfd opened without O_SEARCH
Konstantin Belousov [Mon, 29 Jan 2024 17:54:32 +0000 (19:54 +0200)]
open(2): describe *at behavior for dirfd opened without O_SEARCH

and move the BUGS paragraph about dirfd permissions into STANDARDS
section, noting that we provide POSIX-mandated implementation.

Reviewed by: emaste, kevans
Sponsored by: The FreeBSD Foundation
MFC after: 3 days
Differential revision: https://reviews.freebsd.org/D43652

4 months agoLinux 6.8 compat: handle mnt_idmap user_namespace change
Rob Norris [Tue, 23 Jan 2024 10:14:06 +0000 (21:14 +1100)]
Linux 6.8 compat: handle mnt_idmap user_namespace change

struct mnt_idmap no longer has a struct user_namespace within it. Work
around this by creating a temporary with the copy of the map we need
taken from the idmap.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Co-authored-by: Youzhong Yang <yyang@mathworks.com>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #15805

4 months agoLinux 6.8 compat: fix inode permission tests
Rob Norris [Tue, 23 Jan 2024 06:43:20 +0000 (17:43 +1100)]
Linux 6.8 compat: fix inode permission tests

The name inode_permission is now defined in the kernel. Rename ours to
test_permission, in line with most of our other tests.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #15805

4 months agoLinux 6.8 compat: replace MAX_ORDER define
Rob Norris [Tue, 23 Jan 2024 05:41:05 +0000 (16:41 +1100)]
Linux 6.8 compat: replace MAX_ORDER define

MAX_ORDER has been renamed to MAX_PAGE_ORDER. Rather than just
redefining it, instead define our own name and set it consistently from
the start.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #15805

4 months agoLinux 6.8 compat: implement strlcpy fallback
Rob Norris [Tue, 23 Jan 2024 05:34:49 +0000 (16:34 +1100)]
Linux 6.8 compat: implement strlcpy fallback

Linux has removed strlcpy in favour of strscpy. This implements a
fallback implementation of strlcpy for this case.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #15805

4 months agoLinux 6.8 compat: update for new bdev access functions
Rob Norris [Tue, 23 Jan 2024 04:42:57 +0000 (15:42 +1100)]
Linux 6.8 compat: update for new bdev access functions

blkdev_get_by_path() and blkdev_put() have been replaced by
bdev_open_by_path() and bdev_release(), which return a "handle" object
with the bdev object itself inside.

This adds detection for the new functions, and macros to handle the old
and new forms consistently.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #15805

4 months agoLinux 6.8 compat: make test functions static
Rob Norris [Mon, 22 Jan 2024 23:50:53 +0000 (10:50 +1100)]
Linux 6.8 compat: make test functions static

The kernel is now being compiled with -Wmissing-prototypes. Most of our
test stub functions had no prototype, and failed to compile. Since they
don't need to be visible anywhere else, just make them all static.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Sponsored-by: https://despairlabs.com/sponsor/
Closes #15805

4 months agoLinux 6.7 compat: META
Brian Behlendorf [Mon, 29 Jan 2024 19:35:43 +0000 (11:35 -0800)]
Linux 6.7 compat: META

Update the META file to reflect compatibility with the 6.7 kernel.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #15833

4 months agobhyve: Use NVMEF macro to construct fields
John Baldwin [Mon, 29 Jan 2024 19:02:07 +0000 (11:02 -0800)]
bhyve: Use NVMEF macro to construct fields

Reviewed by: corvink, chuck (older version)
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43607

4 months agonvmecontrol: Use NVMEF macro to construct fields
John Baldwin [Mon, 29 Jan 2024 19:01:46 +0000 (11:01 -0800)]
nvmecontrol: Use NVMEF macro to construct fields

Reviewed by: imp
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43606

4 months agonvme: Use the NVMEF macro to construct fields
John Baldwin [Mon, 29 Jan 2024 19:01:13 +0000 (11:01 -0800)]
nvme: Use the NVMEF macro to construct fields

Reviewed by: chuck, imp
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43605

4 months agonvme: Add NVMEF helper macro as the inverse of NVMEV
John Baldwin [Mon, 29 Jan 2024 19:00:57 +0000 (11:00 -0800)]
nvme: Add NVMEF helper macro as the inverse of NVMEV

This macro accepts a field name and a value for the field and
constructs the shifted field value.

Reviewed by: chuck
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43604

4 months agobhyve: Use the NVMEM macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 19:00:09 +0000 (11:00 -0800)]
bhyve: Use the NVMEM macro instead of expanded versions

Reviewed by: corvink, chuck
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43603

4 months agonvme: Use the NVMEM macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 18:59:37 +0000 (10:59 -0800)]
nvme: Use the NVMEM macro instead of expanded versions

A few of these omitted a shift of 0, but this is more consistent.

Reviewed by: chuck
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43602

4 months agonvme: Rename NVMEB helper macro to NVMEM
John Baldwin [Mon, 29 Jan 2024 18:58:28 +0000 (10:58 -0800)]
nvme: Rename NVMEB helper macro to NVMEM

The current macro always builds a full mask for a named field, so use
the M suffix for mask.

Reviewed by: chuck, imp
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43601

4 months agobhyve: Use NVMEV to read the ASQS field of AQA
John Baldwin [Mon, 29 Jan 2024 18:51:07 +0000 (10:51 -0800)]
bhyve: Use NVMEV to read the ASQS field of AQA

This is not a functional change, but just being consistent instead of
omitting a shift by 0.

Reviewed by: corvink, chuck, imp
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43600

4 months agocamdd: Use the NVMEV macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 18:50:41 +0000 (10:50 -0800)]
camdd: Use the NVMEV macro instead of expanded versions

Reviewed by: imp
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43599

4 months agobhyve: Use the NVMEV macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 18:49:49 +0000 (10:49 -0800)]
bhyve: Use the NVMEV macro instead of expanded versions

Reviewed by: corvink, chuck (older version)
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43598

4 months agoDon't assert mg_initialized due to device addition race
Paul Dagnelie [Mon, 29 Jan 2024 18:36:42 +0000 (10:36 -0800)]
Don't assert mg_initialized due to device addition race

During device removal stress tests, we noticed that we were tripping
the assertion that mg_initialized was true. After investigation, it was
determined that the mg in question was the embedded log metaslab
group for a newly added vdev; the normal mg had been initialized (by
metaslab_sync_reassess, via vdev_sync_done). However, because the spa
config alloc lock is not held as writer across both calls to
metaslab_sync_reassess, it is possible for an allocation to happen
between the two metaslab_groups being initialized. Because the metaslab
code doesn't check the group in question, just the vdev's main mg, it
is possible to get past the initial check in vdev_allocatable and
later fail due to the assertion.

We simply remove the assertions. We could also consider locking the
ALLOC lock around the reassess calls in vdev_sync_done, but that risks
deadlocks. We could check the actual target mg in vdev_allocatable,
but that risks racing with a passivation that comes in after that
check but before the assertion. We still won't be able to actually
allocate from the metaslab group if no metaslabs are ready, so this
change shouldn't break anything.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Wilson <george.wilson@delphix.com>
Signed-off-by: Paul Dagnelie <pcd@delphix.com>
Closes #15818

4 months agonvmecontrol: Use the NVMEV macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 18:34:02 +0000 (10:34 -0800)]
nvmecontrol: Use the NVMEV macro instead of expanded versions

Reviewed by: imp
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43597

4 months agonda: Use the NVMEV macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 18:33:39 +0000 (10:33 -0800)]
nda: Use the NVMEV macro instead of expanded versions

Reviewed by: chuck
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43596

4 months agonvme: Use the NVMEV macro instead of expanded versions
John Baldwin [Mon, 29 Jan 2024 18:30:54 +0000 (10:30 -0800)]
nvme: Use the NVMEV macro instead of expanded versions

Reviewed by: chuck
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D43595

4 months agopkgbase: Create a FreeBSD-dtb package
Emmanuel Vadot [Sat, 27 Jan 2024 12:20:49 +0000 (13:20 +0100)]
pkgbase: Create a FreeBSD-dtb package

Before that dtbs where included in each kernel packages which prevents
us to install multiple kernels.

Differential Revision: https://reviews.freebsd.org/D43632
Reviewed by: bapt
Sponsored by: Beckhoff Automation GmbH & Co. KG

4 months agopkgbase: Create two new rules for creating repo
Emmanuel Vadot [Fri, 26 Jan 2024 18:52:03 +0000 (19:52 +0100)]
pkgbase: Create two new rules for creating repo

This adds two new rules named create-packages-kernel-repo and
create-packages-world-repo.
The goal of those rules is to create the {kernel,world} packages and
after that the repository.
It helps a lot for developing with pkgbase by adding the dev machine
repository created by those rules on top of the official pkgbase one.

Differential Revision: https://reviews.freebsd.org/D43623
Reviewed by: bapt, emaste
Sponsored by: Beckhoff Automation GmbH & Co. KG

4 months agolibzfs: use zfs_strerror() in place of strerror()
Richard Kojedzinszky [Mon, 22 Jan 2024 23:28:18 +0000 (00:28 +0100)]
libzfs: use zfs_strerror() in place of strerror()

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Signed-off-by: Richard Kojedzinszky <richard@kojedz.in>
Closes #15793

4 months agolibzfs: make userquota_propname_decode threadsafe
Richard Kojedzinszky [Wed, 17 Jan 2024 19:48:02 +0000 (20:48 +0100)]
libzfs: make userquota_propname_decode threadsafe

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Signed-off-by: Richard Kojedzinszky <richard@kojedz.in>
Closes #15793

4 months agoTCP LRO: convert TCP header fields to host byte order earlier
Michael Tuexen [Mon, 29 Jan 2024 17:41:24 +0000 (18:41 +0100)]
TCP LRO: convert TCP header fields to host byte order earlier

This is a preparation for adding dtrace hooks in a follow-up commit,
which are missing in the code path, where packets are directly queued
to the tcpcb. The dtrace hooks expect the fields to be in host byte
order. This only applies when TCP HPTS is used.
No functional change intended.

Reviewed by: rscheff
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D43594

4 months agoservice(8): direct user to rc(8) for a list of valid commands
Lexi Winter [Sat, 13 Jan 2024 23:34:46 +0000 (23:34 +0000)]
service(8): direct user to rc(8) for a list of valid commands

New users may refer to service(8) to discover how to manage services,
but this manpage does not explain which commands are permitted besides
start/stop (for example, 'enable').  Add a paragraph that directs the
reader to rc(8) to discover this.

While here, add a few examples of common use-cases.

Reported by: Mina Galić <freebsd@igalic.co>
Pull request: https://github.com/freebsd/freebsd-src/pull/1057

4 months agolibnvpair.c: replace strstr() with strchr() for a single character
rilysh [Mon, 29 Jan 2024 17:46:13 +0000 (23:16 +0530)]
libnvpair.c: replace strstr() with strchr() for a single character

Since we're looking for a single new-line character in the haystack,
it's better (and slightly more efficient) to use strchr() instead of
strstr().

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Signed-off-by: rilysh <nightquick@proton.me>
Closes #15798

4 months agoUpdate man pages to time(1) from time(2)
Chris Davidson [Mon, 29 Jan 2024 17:44:08 +0000 (12:44 -0500)]
Update man pages to time(1) from time(2)

zpool-iostat.8: Updated time(2) -> time(1) to align to manual page
zpool-list.8: Updated time(2) -> time(1) to align to manual page
zpool-status.8: Updated time(2) -> time(1) to align to manual page
zpool-wait.8: Update time(2) -> time(1) to align to manual page

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Christopher Davidson <christopher.davidson@gmail.com>
Closes #15823

4 months agoZTS: Allow longer run time for zdb_args_pos
Brian Behlendorf [Mon, 29 Jan 2024 17:41:26 +0000 (09:41 -0800)]
ZTS: Allow longer run time for zdb_args_pos

The zdb_args_pos test may take slightly longer than 600 seconds to run
on some of the CI builders.  To prevent this from causing failures allow
up to 1200 seconds for tests in this group.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #15826

4 months agoMerge commit 4a39d0890894 from llvm-project (by Mark Johnston):
Dimitry Andric [Mon, 29 Jan 2024 17:26:48 +0000 (18:26 +0100)]
Merge commit 4a39d0890894 from llvm-project (by Mark Johnston):

  [libc++] Fix filesystem::remove_all() on FreeBSD (#79540)

  remove_all_impl() opens the target path with O_NOFOLLOW, which fails if
  the target is a symbolic link. On FreeBSD, rather than returning ELOOP,
  openat() returns EMLINK. This is unlikely to change for compatibility
  reasons, see https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214633 .

  Thus, check for EMLINK as well.

Reported by: markj
PR: 276632
MFC after: 3 days

4 months agoMove nodes into correct subgraphs
Andrew Innes [Mon, 29 Jan 2024 17:16:02 +0000 (01:16 +0800)]
Move nodes into correct subgraphs

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Signed-off-by: Andrew Innes <andrew.c12@gmail.com>
Closes #15828

4 months agolibc: Annotate a couple of local functions as such
Mark Johnston [Mon, 29 Jan 2024 16:43:50 +0000 (11:43 -0500)]
libc: Annotate a couple of local functions as such

No functional change intended.

MFC after: 1 week

4 months agolinuxkpi: remove invalid KASSERT from hash_add_rcu
Ed Maste [Mon, 29 Jan 2024 14:25:40 +0000 (09:25 -0500)]
linuxkpi: remove invalid KASSERT from hash_add_rcu

hash_add_rcu asserted that the node's prev pointer was NULL in an
attempt to detect addition of a node already on a list, but the caller
is not required to provide a zeroed node.

Reported in https://github.com/freebsd/drm-kmod/issues/282

Reviewed by: bz, manu
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D43645

4 months agolibbe: handle destroying/renaming temporary/bootonce boot environments
R. Christian McDonald [Fri, 26 Jan 2024 16:39:38 +0000 (11:39 -0500)]
libbe: handle destroying/renaming temporary/bootonce boot environments

When a temporary/bootonce boot environment is renamed, we need to also
update the bootenv nvlist on-disk to reflect the new name. Additionally,
when a temporary/bootonce boot environment is destroyed, we also need to
clear out the on-disk state.

Reviewed by: kevans
Approved by: kp
MFC after: 1 week
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D43591

4 months agopf: bind route-to states to their route-to interface
Kristof Provost [Thu, 25 Jan 2024 10:16:49 +0000 (11:16 +0100)]
pf: bind route-to states to their route-to interface

When we route-to the state should be bound to the route-to interface,
not the default route interface. However, we should only do so for
outbound traffic, because inbound traffic should bind on the arriving
interface, not the one we eventually transmit on.

Explicitly check for this in BOUND_IFACE().

We must also extend pf_find_state(), because subsequent packets within
the established state will attempt to match the original interface, not
the route-to interface.

Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D43589

4 months agopfil: PFIL_PASS never frees the mbuf
Kristof Provost [Fri, 26 Jan 2024 12:29:31 +0000 (13:29 +0100)]
pfil: PFIL_PASS never frees the mbuf

pfil hooks (i.e. firewalls) may pass, modify or free the mbuf passed
to them. (E.g. when rejecting a packet, or when gathering up packets
for reassembly).

If the hook returns PFIL_PASS the mbuf must still be present. Assert
this in pfil_mem_common() and ensure that ipfilter follows this
convention. pf and ipfw already did.
Similarly, if the hook returns PFIL_DROPPED or PFIL_CONSUMED the mbuf
must have been freed (or now be owned by the firewall for further
processing, like packet scheduling or reassembly).

This allows us to remove a few extraneous NULL checks.

Suggested by: tuexen
Reviewed by: tuexen, zlei
Sponsored by: Rubicon Communications, LLC ("Netgate")
Differential Revision: https://reviews.freebsd.org/D43617

4 months agotcp: move cc_post_recovery past snd_una update
Richard Scheffenegger [Sat, 27 Jan 2024 23:16:59 +0000 (00:16 +0100)]
tcp: move cc_post_recovery past snd_una update

The RFC6675 pipe calculation (sack.revised, enabled
by default since D28702), uses outdated information,
while the previous default calculated it correctly
with up-to-date information from the incoming ACK.

This difference can become as large as the receive
window (not the congestion window previously),
potentially triggering a massive burst of new packets.

MFC after:             1 week
Reviewed By:           tuexen, #transport
Sponsored by:          NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D43520

4 months agoRevert "release.sh: Add -jN to `make release`"
Colin Percival [Mon, 29 Jan 2024 05:42:24 +0000 (21:42 -0800)]
Revert "release.sh: Add -jN to `make release`"

The release-building code is not fully parallel-safe yet.

This reverts commit 9c1bad2da5ae2a2a3d957c97dcf33c09b34e1c47.

Reported by: jrtc27

4 months agovtnet: Adjust for ethernet alignment.
Warner Losh [Mon, 29 Jan 2024 05:08:55 +0000 (22:08 -0700)]
vtnet: Adjust for ethernet alignment.

If the header that we add to the packet's size is 0 % 4 and we're
strictly aligning, then we need to adjust where we store the header so
the packet that follows will have it's struct ip header properly
aligned.  We do this on allocation (and when we check the length of the
mbufs in the lro_nomrg case). We can't just adjust the clustersz in the
softc, because it's also used to allocate the mbufs and it needs to be
the proper size for that. Since we otherwise use the size of the mbuf
(or sometimes the smaller size of the received packet) to compute how
much we can buffer, this ensures no overflows. The 2 byte adjustment
also does not affect how many packets we can receive in the lro_nomrg
case.

PR: 271288
Sponsored by: Netflix
Reviewed by: bryanv
Differential Revision: https://reviews.freebsd.org/D43224

4 months agokldxref: Be more conservative about what we reject.
Warner Losh [Mon, 29 Jan 2024 04:45:03 +0000 (21:45 -0700)]
kldxref: Be more conservative about what we reject.

kldxref anything whose name doesn't end in .ko or that has no dots (eg
the kernel).

Sponsored by: Netflix
Reviewed by: jrtc27, jhb
Differential Revision: https://reviews.freebsd.org/D43507

4 months agompi3mr: Fix confusion over | and &
Warner Losh [Mon, 11 Dec 2023 02:44:47 +0000 (19:44 -0700)]
mpi3mr: Fix confusion over | and &

Use sc->mpi3mr_debug & MPI3MR_IOT over the | version to test if a bit is
set.

CID: 1529718
Sponsored by: Netflix

4 months agorelease.sh: Add -jN to `make release`
Colin Percival [Mon, 29 Jan 2024 02:04:20 +0000 (18:04 -0800)]
release.sh: Add -jN to `make release`

The `make release` command now creates VM and cloudware images (if
enabled) in addition to disk images; this results in a very large
number of 'make installworld' commands running sequentially.  Adding
-jN should speed this up significantly.

MFC after: 1 month
X-MFC-to: stable/14

4 months agosnd_hdspe(4): Per device sysctl for period.
Florian Walpen [Sun, 28 Jan 2024 20:18:20 +0000 (20:18 +0000)]
snd_hdspe(4): Per device sysctl for period.

Let the user choose a period (interrupt cadence in samples), in the
official RME drivers this setting is available as "Buffer Size".
Override the period propagated through blocksize by pcm channel latency
settings (see sound(4)), since these are unreliable and differ between
playback and recording channels.

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

4 months agokboot: update copyright on these files.
Warner Losh [Sun, 28 Jan 2024 19:19:32 +0000 (12:19 -0700)]
kboot: update copyright on these files.

host_syscalls.c: I've written, so put Netflix copyright on. It's
possible in the confusion that Nathan wrote the host_gettimeofday
implementation.

syscall_nr: These files likely can't enjoy copyright protection since
they are just facts (the per-arch Linux system calls), so add a note
they are in the public domain.

Sponsored by: Netflix

4 months agokboot: Assert copyright here
Warner Losh [Sun, 28 Jan 2024 19:17:44 +0000 (12:17 -0700)]
kboot: Assert copyright here

According to git blame I've 95%+ rewritten this file. Update copyright to
reflect that, but give nod to Nathan for the original I started with.

Sponsored by: Netflix