FreeBSD git weekly: 2026-10-01 to 2026-12-31

Introduction

This is a display of mostly-automatically-classified git commits from 2026-10-01 to 2026-12-31.

This report is still in progress.

DEBUG: This version of the report is primarily for checking the classifiers, and therefore contains extra information (in this colour).

Table of contents and commits per category:

(0) Highlighted commits (these are copies, not in stats)
6 7.7% Userland programs
4 5.1% Documentation
19 24.4% Hardware support
8 10.3% Networking
13 16.7% System administration
2 2.6% Libraries
3 3.8% Filesystems
11 14.1% Kernel
5 6.4% Build system
0 0.0% Internal organizational stuff
4 5.1% Testing
0 0.0% Style, typos, and comments
3 3.8% Contrib code
0 0.0% Reverted commits
0 0.0% Unclassified commits
78 100% total
Technical notes about this page

debug: info about the automatic classification

num % num changed stage
7 9.0% 0 02-filenames_wildcards
2 2.6% 0 02b-filenames_wildcards2
46 59.0% 0 03-filenames_plain1
20 25.6% 0 04-filenames_plain2
2 2.6% 0 05-summary-prefix
1 1.3% 0 Manually-classified commits
0 0.0% 0 Unclassified commits

debug: more stats

num % stage
0 0.0% Misclassified commits
77 98.7% Classified commits, no corrections

debug: groups

0 0.0% num in revert
0 0.0% num in fixes
15 19.2% num in consecutive
15 19.2% Commits in groups

Highlighted commits

For extra visibility, these are copies of commits found in other sections. Most (if not all) come from the commit message containing "Relnotes:", or commits modifying UPDATING.

-- no commits in this category this week --

Userland programs

Commits about commands found in man section 1 (other than networking).

mountpoint(1): new utility, implemented as a stat(1) hardlink
Add mountpoint(1), a simple utility to tell whether the file pointed
to by the argument is a mount point.  It prints whether it is, unless
-q is given, and exits 0 if it is, 1 if it is not, and 2 on error.

The answer comes from the kernel with a single stat(2): the root vnode
of a mounted file system is reported with SFBSD_MNTPOINT in
st_bsdflags.  Unlike comparing realpath(3) of the argument with that
of statfs(2)'s f_mntonname, this works for arbitrarily deep
hierarchies, and after chroot(2) or inside a jail.  A chroot or jail
root is reported as a mount point only if it is one.

The argument does not have to be a directory: file systems such as
nullfs(5) can be mounted over regular files and sockets, and stat(2)
reports those mount points as well.

Since all that is needed is one stat(2) call, make mountpoint a
hardlink to stat(1), the same way readlink(1) is, and document it in
stat.1.

Add ATF tests, including chroot(8) and jail(8) roots that are and are
not mount points, nullfs roots, file systems mounted inside the root,
both from the host and from within the jail, and a nullfs mount of a
file over a file.

Suggested by:   kib
Differential revision:  https://reviews.freebsd.org/D59906
Sponsored by:   Sippy Software, Inc.
MFC after:      2 weeks
43b0384bc7e87df5bd164ce833617e68824f4828 Maxim Sobolev 2026-10-01 21:25:37

debug: classified in 04-filenames_plain2 by 'usr.bin/'

mkimg: Check for realloc failure
If realloc fails, clean up and return ENOMEM; don't just copy data
into NULL.

Reviewed by:    emaste
Reported by:    Claude Opus 5.5
MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60147
1a0523197c5c16ce7bcb79d16c6bf8945258b428 Colin Percival 2026-09-25 23:46:07

debug: classified in 04-filenames_plain2 by 'usr.bin/'

mkimg: Avoid leaking a page of mmap
The image_file_map function adjusts the provided file offset to be
page-aligned, with a resulting increase in the size of the mapped
region; the increased size needs to be used when unmapping as well.

Reported by:    Claude Opus 5.5
Fixes:  https://cgit.freebsd.org/src/commit/?id=baf4abfc39b2 ("Allow building mkimg as cross-tool")
MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60148
434819b4fec5e508bdfe72f91e73402e9c2fca22 Colin Percival 2026-09-26 00:42:40

debug: classified in 04-filenames_plain2 by 'usr.bin/'

mkimg: Add image_buffer_region
This is like image_copyout_region, but copies into a buffer rather than
writing out to a file; it will be used by future support for compressed
images (and potentially other circumstances where image data must be
manipulated before being written out to disk).

Reviewed by:    jrm
No objection from:      Christos Komis (author)
MFC after:      2 weeks
Sponsored by:   Google LLC (GSoC 2025)
Differential Revision:  https://reviews.freebsd.org/D60149
84a3e29c72030dab16b4dc82d601d0af5da6a18c ChrisKom04 2025-07-13 15:46:46

debug: classified in 04-filenames_plain2 by 'usr.bin/'

mkimg: Make vmdk's desc_fmt slightly more generic
This will allow it to be reused in upcoming work.

Suggested by:   Claude Opus 5.5
MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60150
498276b487c838afa2b3e4df322c43141788ba20 Colin Percival 2026-09-26 16:32:15

debug: classified in 04-filenames_plain2 by 'usr.bin/'

mkimg: Add support for stream-optimized VMDK
FreeBSD VM/cloud images tend to be highly compressible: The generic VM
images compress roughly 3.5:1, and cloud images typically even more
since they have significant unused space in their virtual disks.  This
generally doesn't matter for users who can download compressed release
images and extract them locally, but for EC2 in particular relying on
uncompressed image formats is painful: We now upload over 500 GB/week
to AWS.

This commit adds the "stream-optimized" version of the VMDK format,
which compresses each 64 kB "grain" individually (and omits grains
which are all zeroes).  Compared to uncompressed formats, this can
produce much smaller images; experiments indicate that using this
format for EC2 image uploads will reduce the weekly traffic to under
100 GB/week.

Co-authored-by: Claude Opus 5.5
MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60151
9a0b9a23e0bb691034a019edea756377509d0a98 Colin Percival 2026-09-29 19:29:22

debug: classified in 04-filenames_plain2 by 'usr.bin/'

Documentation

Man pages, release notes, etc.

tcpdrop.8: spell newreno
MFC after:    1 week
cdb4538d7f6ba891ad54dd7d3d1b25632410e40f Maxim Konovalov 2026-10-01 16:19:31

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

tcpdrop.8: Xr mod_cc(4)
MFC after:    1 week
9279dd3c15fbbf82e5727bc7bdfbc8e8b5a53552 Maxim Konovalov 2026-10-01 16:22:50

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

bhyve.8: add details on using TPM with UEFI
Add a note that UEFI VMs using TPM devices should be configured
to use a varfile. Some UEFI boot loaders, such as shim, update
persistent boot variables and then reset the system when a TPM is
present. Without a writable varfile, the VM may be reset repeatedly.

Add a TPM device example to the examples list.

While here, add a missing "\" to the "uefivm" example, and add ".Pp"
before the vCPU pinning examples for consistency with other examples.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=287326
Reviewed by:    michaelo, ziaee
Sponsored by:   The FreeBSD Foundation
MFC after:      3 days
Differential Revision:  https://reviews.freebsd.org/D60181
ff2efe65a89a943beec4dd4cc956f5e075a921be Roman Bogorodskiy 2026-09-30 17:56:18

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

mkimg.1: Document new vmdks format
Reviewed by:  ziaee
Co-authored-by: Claude Opus 5.5
MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60152
88017d32745ef24d662db826fe475d8a20d290a6 Colin Percival 2026-09-29 19:44:01

debug: classified in 02-filenames_wildcards by '.*\.[1-9]'

Hardware support

Hardware drivers and architecture-specific code.

ifuncs: Have DEFINE_*IFUNC() macros expand the passed name
While here, make each <machine/ifunc.h> header include <sys/types.h> so
that it can be included standalone.

Reviewed by:    kib
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60167
ab9fcc5a553a25804b9535190e914e3ba0e746cf Olivier Certner 2026-09-30 08:44:16

debug: classified in 03-filenames_plain1 by '['sys/arm/', 'sys/arm64/', 'sys/powerpc/', 'sys/riscv/', 'sys/x86/']'

cxgbe(4): Use alternate credit compute mechanism in T7 LB modes
MFC after:    2 weeks
Sponsored by:   Chelsio Communications
9deffad27457adf505c53589c4f5d6eb1560c288 Navdeep Parhar 2026-09-30 18:07:21

debug: classified in 03-filenames_plain1 by 'sys/dev/'

random: Remove unused include of ifuncs
No functional change (intended).

Reviewed by:    markj, emaste
Fixes:          https://cgit.freebsd.org/src/commit/?id=3a12982962ce ("random: add RDSEED as a provably unique entropy source")
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60193
18ce3f50f630f64d5e9e898a3c06e9ed6e5a63a5 Olivier Certner 2026-09-30 15:04:24

debug: classified in 03-filenames_plain1 by 'sys/dev/'

cxgbev(4): verify the vendor id before claiming a device
PR:           https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=299002
Reviewed by:    jhb
MFC after:      1 week
Sponsored by:   Chelsio Communications
Differential Revision:  https://reviews.freebsd.org/D60203
5f275e547814db5944ff1ca746c31447a0896e1e Navdeep Parhar 2026-10-01 16:16:10

debug: classified in 03-filenames_plain1 by 'sys/dev/'

vt: Fix timer race between vtterm_splash() and vt_flush()
Current code leads to console text being drawn over the splash image.

vt_flush() draws while holding the vtbuf lock. Have it check VDF_SPLASH
under it too, and make vtterm_splash() take the vtbuf lock when setting
it, before drawing the splash.

Sponsored by:   Defenso
Signed-off-by:  Quentin Thébault <quentin.thebault@defenso.fr>
Reviewed by:    vexeduxr
Differential Revision:  https://reviews.freebsd.org/D59928
f958aa7e754d88f3955f3c30a13f0e492822e3c3 Quentin Thébault 2026-09-30 01:42:33

debug: classified in 03-filenames_plain1 by 'sys/dev/'

hwpmc: count each AMD PMC interrupt once
amd_intr() and amd_intr_v2() call pmc_ibs_intr() and then update
kern.hwpmc.stats.intr_processed or intr_ignored.  pmc_ibs_intr() also
updated them.  So each core PMC NMI was also counted as ignored, and
each IBS NMI was counted as processed two times.

Update the statistics only in the caller.

Similarly, drop duplicate PMCDBG messages.

Reviewed by:    mhorne, Ali Mashtizadeh <ali@mashtizadeh.com>
Fixes:          https://cgit.freebsd.org/src/commit/?id=e51ef8ae490f ("hwpmc: Initial support for AMD IBS")
Sponsored by:   AMD
Differential Revision:  https://reviews.freebsd.org/D60185
c97cea955f90ceea1024716d335a39215688f324 Andre Silva 2026-10-02 13:54:04

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Commit group #0: hwpmc_amd: add PerfMonV2 global-control path
hwpmc: fix stopping process PMCs on exit with PerfMonV2

Since 9d3064010590, pmc_process_exit() calls pmc_process_csw_stop_all()
first. That clears pps_cpustate for every virtual PMC on the CPU, so the
exit loop then skips the stop and the final read.

On AMD PerfMonV2 this has two effects:
- The count from the last time slice is lost. A process that never
  switches out before exit reports 0 with pmcstat -p.
- The EVSEL enable bit stays set. After kldunload, the next kldload
  sees it and says "PMCs maybe in use by firmware!".

It is not required that pmc_process_csw_stop_all() should touch the
ppc_cpustate field at all; remove this to fix the issues.

Reviewed by:    mhorne
Fixes:          https://cgit.freebsd.org/src/commit/?id=9d3064010590 ("hwpmc_amd: add PerfMonV2 global-control path")
Sponsored by:   AMD
Differential Revision:  https://reviews.freebsd.org/D60141
4b267d4e4f6a6cd7bd08b9c4854fcb26fab8c18c Andre Silva 2026-10-02 13:55:26

debug: classified in 03-filenames_plain1 by 'sys/dev/'

vt_fb: Do not perform VT switch in vd_init hook
After 40c20fc29cad it is done by vt_core as soon as vt lock is dropped
after vd_init() has been executed to avoid sleeping with non-sleepable
lock held.

Reviewed by:    quentin.thebault_defenso.fr, vexeduxr
Differential Revision:  https://reviews.freebsd.org/D59632
2300c23d8ae876674358eec5283c6684921dfeae Vladimir Kondratyev 2026-10-03 11:26:14

debug: classified in 03-filenames_plain1 by 'sys/dev/'

virtio_console: Negotiate VIRTIO_CONSOLE_F_SIZE
The driver reads cols/rows and sets the tty window size but
never offered the feature, so that code has been dead since
the very beginning; also read size under the configuration
generation count.

Reviewed by:    markj
Approved by:    fuz (mentor)
Differential Revision:  https://reviews.freebsd.org/D60089
9c8dcc2f2fbc9dcf4132b97de3d223f3e9f000a1 Faraz Vahedi 2026-10-03 12:38:27

debug: classified in 03-filenames_plain1 by 'sys/dev/'

virtio: Validate host-supplied used lengths
virtio_console used the host-supplied used lengths without
validation, so a host could report a length larger than
the buffer, causing the receive and control paths to read
past the end of it.  Clamp to the buffer size.

vtnet already rejected used lengths larger than the buffer,
but performed the check after converting the length to an
int, so a length larger than INT_MAX would become negative
and bypass the check.  Reject such frames early before the
conversion, and count them in ierrors and rx_frame_too_large.

Reviewed by:    markj
Approved by:    fuz (mentor)
Differential Revision:  https://reviews.freebsd.org/D60092
15198bfd7437a616e66342be3c672da0b523e710 Faraz Vahedi 2026-10-03 12:39:36

debug: classified in 03-filenames_plain1 by 'sys/dev/'

virtio_console: Handle VIRTIO_CONSOLE_RESIZE
Multiport devices report console size per port by control event,
which was ignored and hence their ttys could never have a window
size.

Reviewed by:    markj
Approved by:    fuz (mentor)
Differential Revision:  https://reviews.freebsd.org/D60094
765615997a3a3ab649505d58087b7375736fdff7 Faraz Vahedi 2026-10-03 12:40:45

debug: classified in 03-filenames_plain1 by 'sys/dev/'

igc: make the hardware RSS hash agree with the stack's configuration
rss_gethashconfig() is available without options RSS since d9c55b2e8cd6.
Use it to program MRQC, as ixl(4), ice(4) and iavf(4) do, instead of a
fixed field set that included UDP 4-tuple, which the configuration
excludes unless net.inet.rss.udp_4tuple is set.  UDP is now hashed on
addresses only by default.

Also report the UDP hash types on receive; they were passed up as
M_HASHTYPE_NONE.

Reviewed by:            kbowling
Fixes:                  https://cgit.freebsd.org/src/commit/?id=517904de5cca ("igc(4): Introduce new driver for the Intel I225 Ethernet controller.")
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60284
66ff9289b041720f29205f179337f81b5dd0c365 R. Christian McDonald 2026-10-04 12:00:51

debug: classified in 03-filenames_plain1 by 'sys/dev/'

Commit group #1: nvme
nvme: delete the I/O queues in the system shutdown path

A normal shutdown deletes all I/O submission and completion queues
before setting CC.SHN, as the suspend path already does.  The
device_shutdown path went straight to the shutdown notification with
the queues live, which some drives take slowly or record as an
unclean stop. Skipped the deletion for failed, removed, or
never-initialized controllers.

Reviewed by:    imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59633
22f50379ab93024354e98333250d453a6d0eaff5 Abdelkader Boudih 2026-10-04 17:40:29

debug: classified in 03-filenames_plain1 by 'sys/dev/'


nvme: do not complete a command when its Abort is not performed

An Abort completion with cdw0 bit 0 set means the controller did not
abort the command; the command can still complete later. The driver
treated this as aborted anyway: it completed the command itself and
freed the CID. When the controller completed the command later,
the CID may already belong to a new command, so the new command
finished with the old command's status, or the unknown-cid assertion
fired on INVARIANTS kernels. The watchdog also kept sending a new
Abort for the same command every half second while the first one was
still pending.

Reviewed by:    imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59634
0a0490ed551d8c89aca16b6b2f1a3b3681b60972 Abdelkader Boudih 2026-10-04 17:40:52

debug: classified in 03-filenames_plain1 by 'sys/dev/'


nvme: set the controller Timestamp feature

Controllers that report ONCS.TIMESTAMP keep a millisecond clock that the
host is expected to seed

Reviewed by:    imp, adrian
Differential Revision:  https://reviews.freebsd.org/D59997
e8a7efd92181720e9d7a7ef50fe3a00294911027 Abdelkader Boudih 2026-10-04 17:41:17

debug: classified in 03-filenames_plain1 by 'sys/dev/'

powerpc: keep FP, VMX and VSX ownership changes atomic with preemption
trap() and set_mcontext() change the FP/VMX/VSX ownership state in
several steps with preemption enabled.  A context switch in between
leaves the thread computing with another thread's register contents:

- enable_fpu()/enable_vec() set PCB_FPU/PCB_VEC before loading the
  registers, so a switch mid-load saves a half-loaded unit over the PCB.
- set_mcontext() clears the frame's MSR bits and then the PCB flags;
  a switch in between re-enables the unit, and the thread returns to
  user space with it enabled but not owned, so it is neither saved nor
  restored until the next signal.

Both paths run after every sigreturn(2), setcontext(2) and
swapcontext(3).  A POWER9 test that keeps f14-f31 live across a signal,
with other threads using the FPU on the same CPU, saw 283 corrupted
round trips out of 882000; none after this change.

Hold a critical section around both, as amd64 and arm64 do.

Reviewed by:    jhibbits
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D60054
1f1043d550ea2b8282e692019f17a88896212a76 Piotr Kubaj 2026-09-21 12:48:06

debug: classified in 03-filenames_plain1 by 'sys/powerpc/'

igc: Fix the flow control sysctl
dev.igc.N.fc read and wrote a function-static variable shared by every
igc device, so a read returned the last value written to any of them (3
until the first write), not the state of the device.  The softc value
started as 0, which is also the value of "no flow control", while the
hardware was set up for full flow control.  As a result:

- Writing 0 was taken for no change and did nothing, unless another
  value had been written to that device before.
- igc_reset() took a softc value of 0 for "not set", so a device set to
  0 went back to full flow control on the next init.
- With more than one receive queue the driver enabled per-queue drop
  (SRRCTL.DROP_EN), which is meant for a MAC that does not send pause
  frames, although the MAC was told to send them.
- Values out of range were accepted and ignored.

A write only forced the MAC's flow control bits.  The pause bits
advertised to the link partner, the pause thresholds and DROP_EN stayed
as the last init had set them, and the next link event resolved flow
control from the stale advertisement again: a port set to 0 came back
honoring pause frames, for example.

Start the softc value as full, report it, use it as it is in
igc_reset(), reject invalid values, and apply a change by
reinitializing the interface, as the dmac and eee_control sysctls do.

Two things behave differently now.  Changing the mode of a running
interface takes the link down to renegotiate.  And with the default
mode and more than one receive queue DROP_EN is no longer set: a full
receive ring makes the MAC send pause frames, and holds up the other
queues, where it used to drop that queue's packets.  Setting fc to 0 or
1 selects per-queue drop.

Tested on I226-V ports with four receive queues: for each mode, the
flow control bits in CTRL, the pause thresholds and DROP_EN were read
back, and the mode the link partner resolved, also after a down/up.

Reviewed by:            gallatin
Fixes:                  https://cgit.freebsd.org/src/commit/?id=517904de5cca ("igc(4): Introduce new driver for the Intel I225 Ethernet controller.")
MFC after:              2 weeks
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60363
68386f6b551e64c956c9623b9973be9e462ce1de R. Christian McDonald 2026-10-05 14:01:54

debug: classified in 03-filenames_plain1 by 'sys/dev/'

arm64/gicv5: Use ArmMpidr to find the correct CPU
The GICv5 ACPI code uses CpuInterfaceNumber to as the CPU ID. This a
GICv5 CPU ID and may not be the same as the appropriate FreeBSD value.

It is also possible the target CPU is disabled, e.g. when the hw.ncpu
tunable is uses to limit CPUs. If this is the case we don't want to
enable the CPU in the cpu set as it is offline so cannot handle
interrupts.

Switch to use ArmMpidr to find which pcpu to use when finding which
CPUs the IRS is attached to.

Fixes:  https://cgit.freebsd.org/src/commit/?id=9556306213e1 ("arm64: Add ACPI support to GICv5 driver")
Differential Revision:  https://reviews.freebsd.org/D59993
Sponsored by:   Arm Ltd
412c3a0370491c6745e056266f54ce9aa67017e1 Andrew Turner 2026-10-05 13:31:02

debug: classified in 03-filenames_plain1 by 'sys/arm64/'

arm64: Elide coherent busdma maps
Avoid allocating per-transfer maps for coherent tags that cannot
bounce. Retain maps for cache synchronization, CCA realms, and KMSAN.
These un-used maps carry with them memory and cache miss overheads.

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D60098
Sponsored by: Netflix
16c787fbabb8077df1af3bd3baaddf3b4c0dd8e8 Andrew Gallatin 2026-10-05 14:56:10

debug: classified in 03-filenames_plain1 by 'sys/arm64/'

Networking

Network-related commands, library, and kernel.

Commit group #2: pf
pf: free the packet rate counter of a rule

pf_ioctl_addrule() allocates a counter_rate for every rule, whether it
has a max-pkt-rate or not, and pf_krule_free() never frees it.

Free it with the rest of the rule.

Reviewed by:            kp
Approved by:            kp (mentor)
Fixes:                  https://cgit.freebsd.org/src/commit/?id=ff11f1c8c76c ("pf: add a generic packet rate matching filter")
MFC after:              1 week
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60190
2fa4ef491608aad827f8ceef3eb389d8c07451fb R. Christian McDonald 2026-10-01 10:32:32

debug: classified in 03-filenames_plain1 by 'sys/netpfil/'


pf: remove a source limiter from the id tree if its name is taken

When pf_sourcelim_add() finds the name of the new limiter taken, it
undoes the insertion into the id tree with RB_REMOVE() on the name tree,
which the limiter is not in, and then frees the limiter.  The freed
limiter stays in the inactive id tree, and RB_REMOVE() of an element
with no links clears the root of the name tree, which loses every other
inactive limiter from it.  pf_statelim_add() gets this right.

parse.y refuses duplicate names, so pfctl does not get here, but any
netlink client can.

Reviewed by:            kp
Approved by:            kp (mentor)
Fixes:                  https://cgit.freebsd.org/src/commit/?id=461648121230 ("pf: introduce source and state limiters")
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60189
5c13a82de8be51c8472e922a667519d575dcb59e R. Christian McDonald 2026-10-01 10:34:50

debug: classified in 03-filenames_plain1 by 'sys/netpfil/'


pf: return per-address feedback from netlink table test

The PFNL_CMD_TABLE_TEST_ADDRS reply carries only the match count, so
the per-address feedback from pfr_tst_addrs() is lost:
"pfctl -v -T test" lists nothing and "pfctl -vv -T test" reports
every address as "nomatch".

Return each address, as updated by pfr_tst_addrs(), in a nested
PF_TAS_ADDR attribute, and decode them into the caller's array in
libpfctl.  PF_TA_ADDR is not reused: it shares its value with
PF_TAS_ASTATS, which older libpfctl would decode into an
uninitialised target.  That target was also read when no reply was
parsed, so the match count could be garbage; initialise it.

Add a regression test.

Reviewed by:            kp
Approved by:            kp (mentor)
Fixes:                  https://cgit.freebsd.org/src/commit/?id=281282e9357b ("pf: convert DIOCRTSTADDRS to netlink")
See also:               https://redmine.pfsense.org/issues/17135
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60146
f05af59fba6912bdde8c911b0820871224ed16db R. Christian McDonald 2026-10-01 10:39:01

debug: classified in 05-summary-prefix by 'pf:'

tcp: use SB_AUTOSIZE flag to tell if socket buffer was set
The check against V_tcp_sendspace is not a correct one, as a buffer may
grow larger than the initial value.  The conjunction was always false up
until 587c6c121504, and only after it the bug surfaced.

If we already grow our buffer past the value stored in the hostcache,
prefer our value.

Reviewed by:            tuexen
Differential Revision:  https://reviews.freebsd.org/D60105
e65b7079db12afb1aa61be4f1c666b162984a95e Gleb Smirnoff 2026-10-02 02:53:31

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

pf: do not leak a source hash row lock in the netlink dump
pf_handle_get_srcnodes() returns with the lock of a source hash row
held when it cannot start the message for a source node.  Unlock the
row there, as the other error exit of the loop does.

Reviewed by:            kp
Approved by:            kp (mentor)
Fixes:                  https://cgit.freebsd.org/src/commit/?id=9c125336727b ("pf: convert DIOCGETSRCNODES to netlink")
MFC after:              1 week
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60251
782c6ea08603a4839c2c099842df92b6159b799f R. Christian McDonald 2026-10-02 17:10:56

debug: classified in 03-filenames_plain1 by 'sys/netpfil/'

netinet6: Fix the OSIOCAIFADDR_IN6 handler
We cannot simply treat a pointer to struct oin6_aliasreq as a pointer to
struct in6_aliasreq: the latter is larger.  In particular, the store to
ifra->ifra_vhid is out of bounds.

Since OSIOCAIFADDR_IN6 does not need to copy data back out, it can
simply use a struct in6_ifaliasreq on the stack.

Reported by:    Andrew <xxx.sys@protonmail.com>
Reviewed by:    pouria
MFC after:      1 week
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60184
c109a681456d03fc0737ca83487995e28b759e3b Mark Johnston 2026-10-05 13:13:47

debug: classified in 03-filenames_plain1 by 'sys/netinet6/'

tcp: Preserve borrowed ICMPv6 error mbufs
The TCP-over-UDP ICMP callback receives ip6c_m as a borrowed chain owned
by icmp6_notify_error.  It used m_pulldown() to obtain a contiguous UDP
header even though that API frees the complete chain when the requested
range is unavailable.  The callback could then return without
propagating the lost ownership, leaving raw ICMP delivery to read and
free a stale head.

Validate that the complete UDP header was quoted, copy it through the
chain with m_copydata(), and temporarily advance the parser offset
instead of consuming bytes from the caller-owned packet.

A remote sender can reach the old path when TCP UDP tunneling is enabled
by quoting the configured local UDP source port in an ICMPv6 error and
including only four through seven UDP-header bytes.

Signed-off-by: Andrew Griffiths <andrew@calif.io>

Reviewed by:    pouria, tuexen, markj
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D60143
80af0a32e48bff6ad97e768b16d2dbc01ac8d1c3 Andrew Griffiths 2026-10-05 13:14:38

debug: classified in 03-filenames_plain1 by 'sys/netinet/'

iflib: Do not ring the transmit doorbell when nothing is pending
For a lightly used ring iflib_txd_db_check() may defer zero descriptors,
so its "pending >= limit" test is true even when nothing has been queued
since the last doorbell.  iflib_txq_drain() calls it before, inside and
after its loop, so a sender that drains its own packet wrote the tail
register three times per packet, twice with the value the hardware
already had.

The log of 81be655266fa ("iflib: ensure that tx interrupts enabled and
cleanups") calls skipping the doorbell when db_pending is zero "an
obvious missing optimization"; the comparison against a limit of zero
defeated it.  vmx(4) and mgb(4) have dropped such repeated requests in
the driver since 2019.  Return early when nothing is pending.

Reviewed by:            gallatin
MFC after:              2 weeks
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60290
4a0ec469934a5de60b9b540689703a698ac44105 R. Christian McDonald 2026-10-05 15:17:13

debug: classified in 03-filenames_plain1 by 'sys/net/'

System administration

Stuff in man section 8 (other than networking).

tcpdrop: improve handling of -C and -S
Handle empty strings for -Cand -S correctly.

Reported by:            maxim
Reviewed by:            maxim
MFC after:              1 week
MFC to:                 stable/14
MFC to:                 stable/15
Sponsored by:           Netflix, Inc.
Differential Revision:  https://reviews.freebsd.org/D60210
e2279d5ba9a91407239cba4bed80abff73b15798 Michael Tuexen 2026-10-01 19:09:11

debug: classified in 04-filenames_plain2 by 'usr.sbin/'

stand/images: remove translucent pixels around orb
Remove semi-transparent pixels around the orb. These become more
pronounced when the orb is used as the spash screen image.

While here also strip metadata.

MFC after:      3 days
Reviewed by:    tsoome
Differential Revision:  https://reviews.freebsd.org/D60163
f7663278c2ba527dc681b1a806d4cc78ea49452b Ahmad Khalifa 2026-10-02 02:11:32

debug: classified in 03-filenames_plain1 by 'stand/'

Commit group #3: stand
stand: Remove const from zfs_lookup's zfsmount argument

Dynamic system attribute layout can require modifications to the mount
structure on lookup. Drop the const to allow that.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60260
acbcb68c9f744dedc49835b8e235a0afa13f6c26 Warner Losh 2026-10-03 14:41:40

debug: classified in 03-filenames_plain1 by 'stand/'


stand: zfs_dnode_stat move from spa to mount argument

When reading dynamic system attributes, we'll need the mount argument
since we can no longer hard-code the offsets. Adjust zfs_dnode_stat to
take it.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60261
ecd41c0df3a0e5f98716c5aabbdeb36c2c29b86f Warner Losh 2026-10-03 14:42:21

debug: classified in 03-filenames_plain1 by 'stand/'


stand: zfs_dnode_readlink move from spa to mount argument

For the dynamic system attributes, we'll need the mount argument. Adjust
zfs_dnode_readlink to take that argument.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60262
16cf795d3e0bf9cc605ea64564c8cfecae74ff76 Warner Losh 2026-10-03 14:42:27

debug: classified in 03-filenames_plain1 by 'stand/'


stand: Load dynamic system attribute offsets

zfs_sa_load looks up all the system attribute offsets and stores them in
the mountpoint.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60264
32fcc66dd311207451cd4916f9ed837ee19f9e07 Warner Losh 2026-10-03 14:42:38

debug: classified in 03-filenames_plain1 by 'stand/'


stand: Lookup the offsets for this SA bundle

Compute the offset for the data for this bundle and the requested data
type.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60265
4175fa107f77e93c7e5c7d0dbd3662b0a6ae620b Warner Losh 2026-10-03 14:42:43

debug: classified in 03-filenames_plain1 by 'stand/'


stand: Lookup specific SA value in a dnode

zfs_dnode_sa_lookup will look in the bonus part of the dnode for the
requested SA values, and fall back to the spill as if it's not there.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60266
8bc06ba211b962c4742fe2acb17c22b86256d592 Warner Losh 2026-10-03 14:42:48

debug: classified in 03-filenames_plain1 by 'stand/'


stand: update zfs_dnode_stat to use zfs_dnode_sa_lookup

Find the SA values with the zfs_dnode_sa_lookup and read out the
relevant bits for the stat buffer.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60267
f382ef1dc82cf0679b164be1e6cce51c022a204c Warner Losh 2026-10-03 14:42:53

debug: classified in 03-filenames_plain1 by 'stand/'


stand: Implement zfs_dnode_readlink in terms of zfs_dnode_sa_lookup

Get the link offset using the zfs_dnode_sa_lookup helper now.

Recently, the symbolic links we rely on in the boot loader have stopped
working.

Prior to OpenZFS commit e90badec11d3 ("Inherit the project ID for every
object type", Matt Turner, 2026-08-14), symbolic link information was
written at a fixed offset in the SA data. Since that commit, the
inherited PROJIDs mean that all pools with quota enabled have started
writing symbolic links with a new, non-fixed offset. Old symbolic links
remained unchanged, but new ones were written with a different
offset. At work, we have all these things: rewritten BEs, quotas, and a
dependence on symbolic links in our boot path.

This came in on 2026-08-24 OpenZFS merge (22649d4dba73). This was 12
hours after stab week for August, so we didn't hit this until the
September stab week. Since the new kernel has to write links at the new
offset, the initial tests worked, but the second ones didn't.

Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D60268
262fa4695d90207b9080f2cc5cb01eccf07fe243 Warner Losh 2026-10-03 14:42:58

debug: classified in 03-filenames_plain1 by 'stand/'

nuageinit: apply meta-data if user-data is a script
Tested by:    adam.mizerski@ovhcloud.com
Sponsored by:   OVHcloud
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2446
de0a279c8b6967ffd1cb0c9f76d3cc4658a0f1aa Adam Mizerski 2026-09-25 08:54:48

debug: classified in 03-filenames_plain1 by 'libexec/'

stand: Bump version to 3.1
Sponsored by:         Netflix
edc51d1de57cf735f1276511779202f111e48fbc Warner Losh 2026-10-04 05:15:14

debug: classified in 03-filenames_plain1 by 'stand/'

camcontrol: Add support for firmware uploading on HPE-branded drives
b30e67dc130ea8217e92e0b4c462f189e2268eba Peter Eriksson 2026-10-02 16:45:59

debug: classified in 03-filenames_plain1 by 'sbin/'

Libraries

libc/stdlib/getenv.c: always allocate new environment
in particular, if the old environment is NULL.

Among making it less surprising for userspace to observe NULL environ,
the change also prevents NULL deref in __rebuild_environ() when
terminating the empty as NULL environment with the NULL pointer.

Reported by:     Leo Bicknell <bicknell@ufp.org>
PR:     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=298747
Reviewed by:    emaste, markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D59996
dec68aeff8ce0ce154e93325a74bba6af71c87af Konstantin Belousov 2026-09-24 18:30:57

debug: classified in 04-filenames_plain2 by 'lib/'

libpfctl: remove the state getters that do not take a handle
Nothing in the tree calls any of the three.  Remove them rather than
fix them: pfctl_get_states_h() does the same with the handle that the
caller has.  pfctl_free_states(), struct pfctl_states and the list
entry in struct pfctl_state were there for pfctl_get_states() alone,
and go with it.

Reviewed by:            kp
Approved by:            kp (mentor)
Fixes:                  https://cgit.freebsd.org/src/commit/?id=2a478dfc7f9c ("libpfctl: retrieve family id only once")
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60248
a5b1b2d2c5e585364809fdf8f165d6dc742faadb R. Christian McDonald 2026-10-04 12:06:10

debug: classified in 04-filenames_plain2 by 'lib/'

Filesystems

zfs: cherry-pick from openzfs/master (restore reverted commit)
zpool: Add zpool status -vv error ranges (#17864)

Add necessery change to libzfs/Makefile

(cherry picked from commit e903655c50fe2e710a4cdfe6e638454012ef6324)
fc6ed8627222a625a700e99cdfcda19654a0c651 Tony Hutter 2026-09-16 22:12:23

debug: classified in 05-summary-prefix by 'zfs:'

ffs: revalidate mkdir dependencies after vnode lookup
flush_pagedep_deps() drops the soft updates lock while obtaining the
vnode of a newly created directory with get_parent_vp().  The
MKDIR_BODY dependency may complete during this interval, invalidating
the diradd selected before the lock was dropped.

Once the directory's allocdirect is retired, the lookup of its first
block by block number in flush_newblk_dep() can find an older
dependency for a previous use of the same physical block.  The newblk
hash is not unique by block number: when ffs_reallocblks() relocates a
cluster, the completed allocindirs of the old blocks stay on the
indirdep's ir_completehd until the indirect block pointer in the inode
is written, while the old blocks are already free and may be allocated
to a new directory.  flush_newblk_dep() then finds a D_ALLOCINDIR where
it expects a D_ALLOCDIRECT and panics with "flush_newblk_dep: Bad
newblk".

Retain the vnode returned by get_parent_vp(), reacquire the soft
updates lock, and restart dependency selection.  Use the retained vnode
only when the newly selected MKDIR_BODY dependency refers to the same
inode.

Enter flush_newblk_dep() with the soft updates lock held and pass it
the associated diradd.  Recheck MKDIR_BODY after every operation that
may drop the lock, so that completion during the helper's retry loop
cannot result in another lookup of the retired allocation.

Keep the vnode handling in flush_pagedep_deps(), which owns the retained
vnode and the list of unfinished diradds, and move the dependency
selection into flush_pagedep_deps1().  The latter never acquires or
releases a vnode: it returns EJUSTRETURN with the inode number when it
needs one, or with 0 when the retained vnode must be released first,
and every call restarts the selection, so a vnode is only used for a
diradd found while it was held.  This also merges the two
get_parent_vp() call sites.  Every restart goes through that return:
obtaining or releasing a vnode, and continuing after jwait() or
getdirtybuf() had to wait with the softdep lock dropped.  The diradds
deferred on the unfinished list are put back on the pagedep's list
before the lock is dropped for a restart, so that none are kept off it
while other threads can run.  Assert that flush_newblk_dep() is called
with the vnode exclusively locked.

This preserves the original newblk dependency ordering and retains the
existing assertion for an active MKDIR_BODY dependency that resolves to
an unexpected dependency type.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297976
Reviewed by:    kib
Tested by:      pho
Sponsored by:   Sippy Software, Inc.
Differential revision:  https://reviews.freebsd.org/D59356
479c98287ee63496bd44d8d64d63c9ec16323e33 Maxim Sobolev 2026-10-04 19:24:39

debug: classified in 03-filenames_plain1 by 'sys/ufs/'

nfs_nfsdstate.c: Add an extra safety belt check for the backchannel
I do not think that xp_p2 can be NULL at this point,
but add an extra safety belt, just in case.

Reviewed by:    rmacklem
MFC after:      1 week
Sponsored by:   VersatusHPC
a52c50b4b7c2652954ef1bd34710a4b1fc8ef391 Vinicius Ferrao 2026-10-04 21:28:25

debug: classified in 03-filenames_plain1 by 'sys/fs/'

Kernel

Kernel stuff (other than networking, filesystems, and drivers).

ifuncs: Include <machine/ifunc.h> instead of <x86/ifunc.h>
All architectures have been providing an 'ifunc.h' header with
DEFINE_IFUNC() et alter working both in kernel and userland since commit
cf41d1113377 ("riscv: implement kernel ifunc resolution"), and separate
<i386/ifunc.h> and <amd64/ifunc.h> headers were introduced in commit
2b1db07bec92 ("x86: add machine/ifunc.h"), so stop including
<x86/ifunc.h> directly and use the common <machine/ifunc.h> idiom.

While here, re-order includes in the blocks featuring <x86/ifunc.h>,
which requires fixing <x86/apicvar.h> so that it can be included before
<machine/intr_machdep.h>.

Reviewed by:    kib
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60194
a2fbd988638e94b61cc78449e893f2c02d43dec0 Olivier Certner 2026-09-30 13:01:46

debug: classified in 04-filenames_plain2 by 'sys/'

sendfile: keep the lowat hack more conservative
First, record the original lowat value and later in the wait/EAGAIN loop
look at the original value, rather than on the value that we just faked.
This eliminates some blank syscalls, where socket was reported as writable
and immediate write instantly fails.  In my testing the ratio of such
syscalls was really small, under 2%, however in a different scenario this
negative effect can be more profound.

Second, cap the lowat growth to 1/2 of original socket buffer size, rather
than to current size.  The problem was there before, but it became more
profound after 587c6c121504.

Note: we are considering to evaluate if the lowat hack is needed at all.

Reviewed by:            tuexen
Differential Revision:  https://reviews.freebsd.org/D60106
6948f4d5e2b29100b986a96175ef9efb1ab91616 Gleb Smirnoff 2026-10-02 02:53:40

debug: classified in 04-filenames_plain2 by 'sys/'

ssp: Make the panic string more accurate
"stack overflow detected" sounds like the thread faulted because it
ran out of stack space.

Reported by:    Andrew <xxx.sys@protonmail.com>
MFC after:      1 week
Sponsored by:   The FreeBSD Foundation
0f4b7d28ccb5c8edd0e4aad8135a4356f8a31961 Mark Johnston 2026-10-01 18:32:58

debug: classified in 04-filenames_plain2 by 'sys/'

jail: note existing process/prison lock order in witness.
d9e2caccfac14c43bf9ad62bdd35d4a03356ff91 Jamie Gritton 2026-10-02 22:18:00

debug: classified in 04-filenames_plain2 by 'sys/'

callout: do not retry a try-lock callout sooner than a tick
When softclock_call_cc() fails to acquire the lock of a CALLOUT_TRYLOCK
callout, it reschedules the callout half its precision after
cc_lastscan and halves the precision. Repeated failures shrink the
delay toward zero, and once the precision reaches 1 the callout is due
immediately: the timer fires again at once and softclock retries the
lock in a tight loop for as long as the lock is held.

If the lock owner runs on the callout's CPU and no other CPU is idle,
the softclock thread preempts it on every attempt, starving the thread
it is waiting on. On an 8-CPU arm64 VM, a test module holding the lock
saw 760,000 attempts per second, each with its own timer interrupt, and
progressed at 38% of its normal rate. On a 4-core amd64 system under
loopback TCP load, a netisr thread holding an inpcb lock made no
progress for 12 minutes while the TCP timer callout was retried 830,000
times per second.

Keep the half-precision retry, but never schedule it less than one
tick from now. Base the deadline on sbinuptime() rather than
cc_lastscan: cc_lastscan is the time of the last callout_process()
scan, which can be a tick or more in the past by the time softclock
runs the callout, leaving cc_lastscan + tick_sbt already expired.

Floor the precision at a tick as well. With a precision of 1 the
retries of many contended callouts cannot share a timer interrupt: the
timer is armed for the earliest retry, each interrupt collects only
those already due, and every callout_process() call walks all the
contended callouts in the callwheel bucket. On the same VM, with
10,000 callouts on one lock, the owner took 5.0 to 5.8 s to finish 1 s
of work with a precision of 1 and 1.3 s with the floor, and
callout_process() ran about 58,000 times against about 900. A single
contended callout is now retried about every two ticks.

Reviewed by:            kib
Fixes:                  https://cgit.freebsd.org/src/commit/?id=efcb2ec8cb81 ("callout: provide CALLOUT_TRYLOCK flag")
MFC after:              2 weeks
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D60246
f12b76524d7bbf3d6c1a890834b6f8d018704ef0 R. Christian McDonald 2026-10-03 23:55:32

debug: classified in 04-filenames_plain2 by 'sys/'

nfscl: Add support for b_pages to be used by RDMA
This patch updates the NFS client RDMA glue so that I/O
can be done directly to/from b_pages for buffer cache
blocks.
It also adds a flag to disable read reduction, that might
be needed against some non-FreeBSD servers and sets readahead
to 8 for RDMA unless the "readahead" option has been
specified.

This commit should not affect non-RDMA behaviour.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
c2089b654ad2568cdd5ddc7baa9ac47db7c3b00c Rick Macklem 2026-10-04 00:40:04

debug: classified in 04-filenames_plain2 by 'sys/'

rpc_generic.c: Initialize "cp" to shut the compiler up
This patch does not fix any semantics issue.

MFC after:      3 months
Fixes:  https://cgit.freebsd.org/src/commit/?id=884ee8d6c9b4 ("nfscl: Add some glue for client side NFS over RDMA")
2050abe804836cb79ced55ea983bb4edc993fa64 Rick Macklem 2026-10-04 01:54:39

debug: classified in 04-filenames_plain2 by 'sys/'

g_part: access leak causes process to hang
So if one inserts a USB drive with a GPT that doesn't match the media
size, a resize is initiated, so gpart takes g_access(cp, 1, 1, 1) on the
disk and holds it until the resize is accepted or rejected. The orphan
path releases it, but the spoil path does not. So if the drive is
ejected while the resize is in flight, we call spoil directly, without
releasing the access. Since gpt_opened is not cleared for the spoil
path, this causes several different process to hang in the open path
waiting for the leaked access.

Move the release into the wither function when gpt_opened is set, and
remove the release elsewhere. Since all paths to destroy the geom pass
through wither, this ensure that access is always released when we've
taken the access for resize.

PR:                     https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297777
Reported by:            Rick Richard
MFC After:              1 week
Sponsored by:           Netflix
Differential Revision:  https://reviews.freebsd.org/D59138
35b59986b5aaedbafefbb79e3da30789ca9aeb24 Warner Losh 2026-10-04 19:19:59

debug: classified in 04-filenames_plain2 by 'sys/'

clnt_vc.c: Fix handling of backchannel xprt
When clnt_vc_destroy() is called, it might not be the
current connection.  Without this patch, if it is not
the current connection, xp_p2 is set NULL and xprt is released
when it should not be released.

This patch adds a check for "current connection" to fix
the problem.  Found during testing to the client RDMA code,
but could happen for TCP as well.

MFC after:      1 week
81a6514689cefdaa5c92b5539ae885ec8c6b3336 Rick Macklem 2026-10-04 20:29:43

debug: classified in 04-filenames_plain2 by 'sys/'

clnt_vc.c: Fix handling of broken TCP connections
After more than, I don't know, maybe 10k operations: mount, copy,
remove, verify and unmount cycles, one cp command hung in
close() / ncl_flush and never recovered. The machine and the mount
continued to work normally through a new connection, but the writes
using the old connection stayed frozen.

I did not understand exactly what happened.  I traced what appears to
be the issue in the code. My current understanding is that
clnt_vc_soupcall() saw the EOF and woke the caller waiting for RPC
replies, but one caller remained blocked in sosend().
That thread continued holding a reference to the old client, preventing
it from being completely cleaned up.

The attached patch calls socantsendmore() when EOF is received, which
should wake the blocked sender and let the normal reconnect code replace
the connection.

Reviewed by:    rmacklem
MFC after:      1 week
Sponsored by:   VersatusHPC
49bec8c3dc58cf8e944f9bbbbea07e7e856ad897 Vinicius Ferrao 2026-10-04 21:07:30

debug: classified in 04-filenames_plain2 by 'sys/'

LinuxKPI: Add crc16.h for amdkfd support
Reviewed by:  wulf
Differential Revision:  https://reviews.freebsd.org/D60275
d7e7397c217137c9f2465f60a7faf129c87934ec Sourojeet A 2026-10-05 12:10:41

debug: classified in 04-filenames_plain2 by 'sys/'

Build system

man: Link ena.4 to if_ena.4
For consistency, create a symbolic link from ena.4 to also if_ena.4

Reviewed by:            #manpages, ziaee
Differential Revision:  https://reviews.freebsd.org/D60191
MFC after:              3 days
566fdcba48817b0f8fea1f9b2963505b925675fb Juraj Lutter 2026-10-01 07:54:04

debug: classified in 02-filenames_wildcards by '.*Makefile'

__FreeBSD_version: Bump for mkimg -f vmdks
Also, adjust bootstrap tools code in Makefile.inc1 to reflect this; in
addition to rebuilding mkimg if it is out of date, we now need to build
libz, which was not previously needed by mkimg.

Reviewed by:    kevans
MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60153
a68ba2d2ce55f7c76174239c1f678379caec5348 Colin Percival 2026-09-29 19:44:41

debug: Commit manually moved from "unknown" to "build".

EC2: Pass --vmdk to bsdec2-image-upload if needed
Starting with version 1.5.0, bsdec2-image-upload supports uploading
stream-optimized VMDK files.  If we build images in that format, we
need to upload them appropriately.

MFC after:      2 weeks
Sponsored by:   Amazon
65840afc88553f89c051b96b081061a532cb7df3 Colin Percival 2026-10-03 16:42:07

debug: classified in 02-filenames_wildcards by '.*Makefile'

EC2: Use stream-optimized VMDK format
Once enabled on all of the branches, this will reduce bandwidth
consumption from uploading weekly snapshot builds from ~500 GB to
~100 GB, as well as significantly speeding up the process.

MFC after:      2 months
Sponsored by:   Amazon
34f2f57b836d9cec02130419f5272495860d4ddf Colin Percival 2026-10-03 16:44:03

debug: classified in 02-filenames_wildcards by '.*Makefile'

bsd.lib.mk: only ctfmerge if objfiles have a CTF section
PR:           https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=299013
Reported by:    Trond.Endrestol@ximalas.info
Reviewed by:    emaste
Fixes:          https://cgit.freebsd.org/src/commit/?id=222210c6a822 ("libgcc_s: add libgcc_s_asneeded.so wrapper for gcc 16")
MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60252
fdd3f6f78888b02a1bfa69a0572317413dc14a45 Siva Mahadevan 2026-10-02 19:54:55

debug: classified in 03-filenames_plain1 by 'share/mk/'

Internal organizational stuff

-- no commits in this category this week --

Testing

tests/sys/vfs: Fix the Linux kld check
linux and linux64 are file names, not module names.  The corresponding
module names are linuxelf and linux64elf, respectively, so these tests
were always being skipped.

Fixes:          https://cgit.freebsd.org/src/commit/?id=b98d169d1f91 ("tests/sys/vfs: add ABI-root absolute symlink tests")
Sponsored by:   The FreeBSD Foundation
2748019034f036e7c18b0dcd7713d972b6e45eed Mark Johnston 2026-10-01 15:00:46

debug: classified in 02b-filenames_wildcards2 by 'tests\/.*'

stress2: Fix script bugs in gnop6.sh, gnop7.sh and fdatasync*.sh
gnop6.sh recorded the checkfs result with "checkfs ... || s=1 && s=0",
which the shell parses as "(checkfs || s=1) && s=0", so the test passed
even when the file system check failed.

gnop7.sh only sets s when unmount or fsck_ffs fails and ends with
"exit $s".  On a clean run s is unset, and the script exits with the
status of the preceding "[ $notloaded ] && gnop unload", which is 1
whenever geom_nop was already loaded, for instance by an earlier test.

fdatasync.sh and fdatasync2.sh ran "df -i $RUNDIR" before creating the
directory.  With a RUNDIR that does not exist yet, df failed, the test
printed "[: -lt: unexpected operator" and the free inode check was
skipped.

Reviewed by:    pho
Differential Revision:  https://reviews.freebsd.org/D60136
Sponsored by:   Sippy Software, Inc.
MFC after:      2 weeks
a68d11d310dd5100a18f187c1108df6703315989 Maxim Sobolev 2026-10-01 16:26:06

debug: classified in 03-filenames_plain1 by 'tools/test/'

mkimg: Add tests for vmdks format
This is the 'stream-optimized' version of the VMDK format.

MFC after:      2 weeks
Sponsored by:   Amazon
Differential Revision:  https://reviews.freebsd.org/D60154
65b872380ed7f7900fc581d482c5586eeca9e184 Colin Percival 2026-09-29 19:58:04

debug: classified in 02b-filenames_wildcards2 by 'usr.bin/.*/tests/.*'

stress2: add a reproducer for the flush_newblk_dep() "Bad newblk" panic
flush_pagedep_deps() drops the soft updates lock to obtain the vnode of
a new directory.  If its MKDIR_BODY dependency completes in that window,
the lookup of the directory's first block in flush_newblk_dep() can find
a stale allocindir left behind by a previous owner of the same block,
relocated by ffs_reallocblks() and freed, and panic.

The test grows interleaved files past UFS_NDADDR to keep clusters being
relocated, while other workers create subdirectories in a parent with
IN_ENDOFF set, so that ffs_vput_pair() syncs it, and fsync() them to
complete the mkdir dependencies.  The file system layout and the way
the writers put their blocks on disk are arranged so that a new
directory takes over a freed block whose dependency is still retained;
the details are in the script.  With dtrace=1, the test also counts how
often this precondition is met, which works on a fixed kernel too.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=297976
Reviewed by:    kib, pho
Tested by:      pho
Sponsored by:   Sippy Software, Inc.
Differential revision:  https://reviews.freebsd.org/D59356
a127039dd0c24bc18b3513322d22fd8fee6724eb Maxim Sobolev 2026-10-04 19:24:16

debug: classified in 03-filenames_plain1 by 'tools/test/'

Style, typos, and comments

These could go in other categories, but it's more clear if they're here instead.

-- no commits in this category this week --

Contrib code

Merge commit 80e8c0a59189 from llvm-project (by ShengYi Hung):
  [DebugInfo] Fill Column 0 if Line is not found (#227559)

  It is possible that user specified line 0 as the start of the line in C
  language (using `# 0`). However, it is rejected by the Lexer as we have
  no line but still carries column information. As a result, we fill
  column to 0 if we cannot find line.

  Assisted-by: Claude # Test
  Fixes: #56186

This fixes a fatal error when building the textproc/peg port.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264853
MFC after:      3 days
37c9eba1644b0f9e1b5d130ccff381122f48aebe Dimitry Andric 2026-10-01 12:31:42

debug: classified in 03-filenames_plain1 by 'contrib/'

[tests] lib/libc/gen:assert_test: undefine `NDEBUG`
In the event `NDEBUG` was defined, `assert` would become a no-op,
breaking some of the expectations in `assert_test` around `assert(..)`
failing generating a coredump.

This is a better approach than the previous one committed in 6f3445006a
as it continues to test the `assert(..)` function instead of just
skipping it if `NDEBUG` was defined.

Suggested by:   kevans
MFC after:      4 days
MFC with:       6f3445006a
Fixes:          https://cgit.freebsd.org/src/commit/?id=6f3445006a
Differential Revision: https://reviews.freebsd.org/D60253
9d5a33d9c294b01cead6ff65b0773b5b5ab85ccd Enji Cooper 2026-10-02 19:27:51

debug: classified in 03-filenames_plain1 by 'contrib/'

Merge commit c4ce37507537 from llvm-project (by ShengYi Hung):
  [Clang][Sema] Create LocalScope for Variable Template (#228280)

  A variable template should create its own LocalScope, as it should be
  opaque to other instantiations. This can occur when there are multiple
  instantiations in the same lexical scope. The correct behavior is that
  these instantiations should not be chained together.

  Assisted-by: Claude # Test ReleaseNote
  Fixes: #134148

This fixes an assertion while building the devel/glaze port.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276265
MFC after:      3 days
fe9c7137871ee0b5c48d4c38b87d80f72e73379e Dimitry Andric 2026-10-03 11:36:42

debug: classified in 03-filenames_plain1 by 'contrib/'

Reverted commits

-- no commits in this category this week --

Unclassified commits

Not classified automatically, and waiting for manual attention.

-- no commits in this category this week --

Technical notes

Dates:

Automatic grouping:

Automatic categories:

Source code:


Generated with commits-periodical 0.21 at 2026-10-05 16:55:07+00:00.

This work is supported by Tarsnap Backup Inc.

Alternate version: 2026-10-01 (release)