FreeBSD git weekly: 2026-11-09 to 2026-11-15

Introduction

This is a display of mostly-automatically-classified git commits from 2026-11-09 to 2026-11-15.

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)
0 0.0% Userland programs
15 8.3% Documentation
40 22.2% Hardware support
8 4.4% Networking
16 8.9% System administration
15 8.3% Libraries
0 0.0% Filesystems
56 31.1% Kernel
6 3.3% Build system
3 1.7% Internal organizational stuff
5 2.8% Testing
3 1.7% Style, typos, and comments
7 3.9% Contrib code
6 3.3% Reverted commits
0 0.0% Unclassified commits
180 100% total
Technical notes about this page

debug: info about the automatic classification

num % num changed stage
6 3.3% 0 00-reverts
3 1.7% 0 01-style
21 11.7% 0 02-filenames_wildcards
5 2.8% 0 02b-filenames_wildcards2
63 35.0% 0 03-filenames_plain1
72 40.0% 0 04-filenames_plain2
7 3.9% 0 05-summary-prefix
3 1.7% 0 Manually-classified commits
0 0.0% 0 Unclassified commits

debug: more stats

num % stage
0 0.0% Misclassified commits
177 98.3% Classified commits, no corrections

debug: groups

6 3.3% num in revert
0 0.0% num in fixes
32 17.8% num in consecutive
38 21.1% 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).

-- no commits in this category this week --

Documentation

Man pages, release notes, etc.

poll.2: document that poll is not restarted after signals
Signed-off-by: _ov4 <ov4@ov4.org>
Reviewed-by: ngie
Pull-Request: https://github.com/freebsd/freebsd-src/pull/2526
72a80a4733b2e2cf7a3e004e961f0fbba9aaa31f _ov4 2026-11-06 06:16:28

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

Commit group #0: libsys/poll.2: bump .Dd for the prior change
libsys/poll.2: bump .Dd for the prior change

MFC after:      1 week
MFC with:       72a80a4733b2
89d6ddee20281270934c73b41d07f04e9bfc86bc Enji Cooper 2026-11-09 05:37:49

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


libsys/ppoll.2: fix .Dd modification to manpage

Reported by:    gcc 14
Fixes:  https://cgit.freebsd.org/src/commit/?id=89d6ddee2028 ("libsys/poll.2: bump .Dd for the prior change")
b4a0f17b35fd862feef3e1284926da48a6aad694 Enji Cooper 2026-11-10 05:22:22

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

arch.7: Mechanical fixes
+ Increase portability by never starting content lines with symbols
+ Improve search results by adding tunables to the variable database
+ Improve search result consistency by correcting description style

MFC after:      3 days
5e91181884fc8f9281f1532605e3efcdc30a5d3a Alexander Ziaee 2026-11-09 08:51:47

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

fmtcheck.3: No crossreferences in titles
Crossreferences in titles are strongly discouraged and incompatible
with our own tooling. This is a wontfix by most of manpages ecosystem
because it is bad editorial style in the first place.

MFC after:      3 days
115f0a2fbf6421549fe3f810fef6dc82c91b9642 Alexander Ziaee 2026-11-09 09:19:16

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

freelocale.3: No crossreferences in titles
Crossreferences in titles are strongly discouraged and incompatible
with our own tooling. This is a wontfix by most of manpages ecosystem
because it is bad editorial style in the first place.

MFC after:      3 days
1794dd612c99849361416daa7c20714615d5ad78 Alexander Ziaee 2026-11-09 09:23:35

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

adduser.conf.5: No crossreferences in titles
Crossreferences in titles are strongly discouraged and incompatible
with our own tooling. This is a wontfix by most of manpages ecosystem
because it is bad editorial style in the first place.

MFC after:      3 days
4cbfaea533eb1b39b845ca52c54672198484156b Alexander Ziaee 2026-11-09 09:38:18

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

flowctl.8: Describe better
Align description with EuroBSD netgraph document descriptions rewrite.

MFC after:      3 days
4cb5268b67ea0722494aa6364d45628cbd2d743c Alexander Ziaee 2026-11-09 09:48:28

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

snmp_hostres.3: fix .Fx macro in the middle of a line
Reported by: bjk
71979d8d10c187f195dfd1fbb438d578f1aa1ac8 Wolfram Schneider 2026-11-09 21:32:13

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

_umtx_op.2: correct the description of the valid _clockid for _umtx_time
And remove the duplicated list from the description of the condition
variable.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
701ac0b230503db65b53c7ee8a211b146fcc82c9 Konstantin Belousov 2026-11-05 21:28:13

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

pthread_cond_timedwait.3: list pthread_cond_clockwait as .Nm
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
29495576ed399b2fce2c12f62356a29dbaaa86f4 Konstantin Belousov 2026-11-05 21:46:16

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

pthread_*_timed*lock.3: switch to .Fo/Fc
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
a9b82d6ba374b022926fcb77a96f8f40df862a3a Konstantin Belousov 2026-11-05 18:23:28

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

pthread_cond_timedwait.3: split STANDARDS and HISTORY
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
b3a205cd689d5c6c20aad37a1407031363c16020 Konstantin Belousov 2026-11-05 23:31:57

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

libc: Refer to xlocale(3) in strto*/wcsto* manpages
Mention the extended locale (_l) versions of strtol(3), strtoul(3),
strtod(3), wcstol(3), and wcstod(3) and point to xlocale(3).

While here, add missing serial commas in function lists and widen the
strtol(3) RETURN VALUES table columns to fit INTMAX_MIN/INTMAX_MAX.

Obtained from:  https://github.com/apple-oss-distributions/libc (partially)
Sponsored by:   Klara, Inc.
7b5a98c202238b7c2dcbc720d064e28d13702527 Aymeric Wibo 2026-11-11 14:35:56

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

strto{u,}l.3: Fix base for which 0b prefix is accepted
Fixes:        https://cgit.freebsd.org/src/commit/?id=76edfabbecde ("libc: Document support for binary integers.")
Sponsored by:   Klara, Inc.
df0fc3a43c48bce41be8305ed13671d2fbe04ab9 Aymeric Wibo 2026-11-11 15:08:40

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

Hardware support

Hardware drivers and architecture-specific code.

arm64 pmap: combine L3C accessed bits in pmap_mincore()
The accessed bit may be set in only some of an L3C superpage's L3
PTEs.  However, when pmap_mincore() found an L3C mapping, it reported
the accessed state of the specified L3 PTE only, so mincore(2) could
fail to report MINCORE_REFERENCED for an L3C superpage that had been
accessed.  When the accessed bit is not set in the specified entry, use
pmap_load_l3c() to combine the accessed bits from all of the L3C
superpage's L3 PTEs.

Found by:       Claude Code (Opus 5.5)
MFC after:      1 week
3ba68f5c5dcc9a4bcd513c28efce29afdfcb76ff Alan Cox 2026-11-02 01:18:01

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

arm64: Rename the user_regs struct and array
In preparation for storing a non-user register rename the struct so and
array so they are more obviously for sanitized registers.

While here switch to a flag field and add a flag to record if the
register is for userspace or just the kernel and check for this when
reading the value for userspace.

Sponsored by:   Arm Ltd
Differential Revision:  https://reviews.freebsd.org/D60742
fb1fb7df9db5c133e36c09201fbedbddb32e37c5 Andrew Turner 2026-11-09 17:03:26

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

riscv: add QEMU marchid
Globally allocated per:
https://github.com/riscv/riscv-isa-manual/blob/main/marchid.md

MFC after:      3 days
Sponsored by:   The FreeBSD Foundation
bba06f0681bb8197f1cd11160fa489c1631f399c Mitchell Horne 2026-11-09 18:01:46

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

Commit group #1: asmc
asmc: split the debug key access into asmc_debug.c

Move the ASMC_DEBUG code out of asmc.c into a file compiled only when the
option is set, gated in files.amd64 the way acpi_debug gates the ACPICA
debugger sources. The module Makefile writes the define into opt_asmc.h so
every translation unit sees it; the old CFLAGS.asmc.c form covered one.

No functional change.

MFC After: 1 Week
Approved-by: ngie (co-mentor)

Reviewed by:    ngie
Differential Revision:  https://reviews.freebsd.org/D61294
d412f42e5377340d27702826bb35520d31d1156f Abdelkader Boudih 2026-11-09 18:35:09

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


asmc: split the PIO backend into asmcpio.c

Moved the inline PIO transactions out of the key transport routines,
which now only dispatch on sc_is_mmio, matching asmcmmio.c. getbyindex and
getinfo stay fused: PIO needs both halves under one hold of sc_mtx.

No functional change.

MFC After: 1 Week
Approved-by: ngie (co-mentor)

Reviewed by:    ngie
Differential Revision:  https://reviews.freebsd.org/D61296
0b545e5a9281919117786d57e02876e8031dfc94 Abdelkader Boudih 2026-11-09 18:35:21

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


asmc: split the sysctl layer into asmcsysctl.c

Moved the dev.asmc.N tree out of asmc.c

No functional change

MFC After: 1 Week
Approved-by: ngie (co-mentor)

Reviewed by:    ngie
Differential Revision:  https://reviews.freebsd.org/D61300
c714cde179a412b95535d2377fcc8dd4e192755e Abdelkader Boudih 2026-11-09 18:35:30

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


asmc: Use c99 initializers with for-loop counters to improve scoping

declared loop indices in the for statement
Index types are unchanged.

No functional change.

MFC After: 1 Week
Approved-by: ngie (co-mentor)

Reviewed by:    ngie, imp
Differential Revision:  https://reviews.freebsd.org/D61301
a3468ea7bd7a0b33b51a1a94ac2e39c0c231bd20 Abdelkader Boudih 2026-11-09 18:35:40

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

asmc: compare integer results to zero explicitly
No functional change.

MFC After: 1 Week
Approved-by: ngie (co-mentor)

Reviewed by:    ngie, adrian
Differential Revision:  https://reviews.freebsd.org/D61303
88e0df0b33e29fe593f1fc07a3847d8764f1ef1b Abdelkader Boudih 2026-11-09 18:36:05

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

Commit group #2: nvme
nvme: Byte-swap the nsid in the Get/Set Features command builders

nvme_admin_get_feature_cmd() and nvme_admin_set_feature_cmd() stored
the namespace ID in the command without converting it to little
endian, unlike the other command building functions.  Any caller
passing a non-zero namespace ID would send the wrong namespace ID on
big endian machines.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=7a9e4375316b
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
3a6dbe77c39d3a88b6092cfcaa820fc727d1e61d Kenneth D. Merry 2026-11-09 18:46:57

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


nvme: Mask the fields in the Format NVM command builder

nvme_admin_format_cmd() did not mask any of the fields it composes
into cdw10, so an out of range value in one field would corrupt
neighboring fields.  In particular, an LBA format index greater
than 15 would bleed into the metadata settings and protection
information fields.  It also had no support for LBA format indexes
above 15, which NVMe 2.0 encodes via the separate LBAFU field.

Mask all of the fields, and encode bits 5:4 of the LBA format index
in the LBAFU field (cdw10 bits 13:12).

Also reject out of range LBA format indexes in camcontrol's
nvformat global (-G) mode, which has no namespace data to validate
against.  The per-namespace mode already validates the index
against NLBAF.

sys/dev/nvme/nvme.h:
        Mask the SES, PIL, PI, MSET and LBAF fields in
        nvme_admin_format_cmd() and encode the upper two bits of
        the LBA format index in LBAFU.

sbin/camcontrol/nvformat.c:
        Reject LBA format indexes greater than 63 in -G mode.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=7a9e4375316b
Fixes:          https://cgit.freebsd.org/src/commit/?id=80f090111ae4
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
3892a6453fc60e00b0d6cd5c5d7e2606b4b51e7c Kenneth D. Merry 2026-11-09 18:46:57

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


nvme: Fix the data length in the Reservation Report command builder

nvme_ns_resv_report_cmd() put its length argument, which callers
supply in bytes, directly into cdw10.  The NUMD field is a 0's
based count of dwords, so the command asked the controller to
transfer nearly four times the size of the supplied data buffer.
In practice controllers limit the transfer to the length described
by the PRP entries, which is why this worked in testing, but the
command was incorrect.

Convert the byte count to a 0's based dword count in the builder.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=7a9e4375316b
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
86b9d629c68f6dc63543b9c0a6da6c96c857f3bc Kenneth D. Merry 2026-11-09 18:46:58

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


nvme: Restore the host memory buffer size calculation

When the nvme_ctrlr_cmd_set_feature() call in
nvme_ctrlr_hmb_enable() was rewritten for the widened Set Features
API, the HSIZE calculation reverted to dividing by a hard coded
4096 instead of the controller page size, undoing commit
3740a8db13ba.  The Host Memory Buffer Size field is in units of
the current memory page size (CC.MPS), so the wrong size would be
programmed on controllers configured with a page size other than
4KB.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=7a9e4375316b
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
f262bdcf24f1f946edcd01f5eb5dfa2910da9e7b Kenneth D. Merry 2026-11-09 18:46:59

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

camcontrol: Fix extended host identifier retrieval
The Get Features command for the host identifier always requested
the 64-bit form (cdw11 EXHID=0), but the decoding logic sized the
identifier from the controller's CTRATT extended host identifier
capability bit, or always treated it as 128 bits when -U was
given.  On a controller supporting the extended host identifier,
the printed value did not match what was requested from the
controller.

Fetch the controller data before issuing the command, request the
extended form when the controller supports it, and decode the form
that was requested.  Reject -U when the controller only supports
64-bit host identifiers, since an 8 byte value cannot be shown as
a UUID.

sys/cam/nvme/nvme_all.c,
sys/cam/nvme/nvme_all.h:
        Add an exhid argument to nvme_get_feature_hostid(),
        matching nvme_set_feature_hostid(), and set the EXHID bit
        in cdw11 from it.

sbin/camcontrol/nvfeature.c:
        Fetch the controller data and determine the host
        identifier size before issuing the Get Features command,
        request only as many bytes as the identifier holds, and
        decode the identifier in the form it was requested.
        Reject -U on controllers without extended host identifier
        support.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=9814633f631b
Fixes:          https://cgit.freebsd.org/src/commit/?id=6eae951cd51b
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2dd34affca4d1041b8f6f58bb24c45f29b720430 Kenneth D. Merry 2026-11-09 18:47:01

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

intel/intel_pmc: Add support for Cannon Lake through Meteor Lake
Match the platform by CPU model and attach on acpi with PWRM at
0xfe000000; the PMC is not PCI-enumerable on these platforms.
SLP_S0_RES offsets and granularities follow each generation's PCH
Family Datasheet Volume 2.  A mismatch between the LPIT residency
counter address and SLP_S0_RES is reported on attach.

Reviewed by:    olce, adrian
Differential Revision:  https://reviews.freebsd.org/D59596
fdf948e3f9e879937a85386fada277f93ba61434 Abdelkader Boudih 2026-11-09 20:03:36

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

ixgbe: Attach the MDIO bus after iflib drops the context lock
ixgbe_mdio_attach() ran from ixgbe_if_attach_post(), which iflib calls
with the context lock held.  Attaching the MDIO bus there also probes
and attaches the devices on it, and their register accesses go through
ixgbe_mdio_readreg_c22() and ixgbe_mdio_writereg_c22(), which take the
same lock.  A driver on the bus that was in the kernel or loaded by
loader(8) therefore recursed on the non-recursive iflib sx lock as soon
as it touched a register: INVARIANTS kernels panic in _sx_xlock_hard(),
others recurse silently.

Wrap iflib_device_attach() and attach the MDIO bus once it has
returned, so the children take the context lock like any later MDIO
access does.

Reviewed by:            kbowling
Fixes:                  https://cgit.freebsd.org/src/commit/?id=cfec995c87f3 ("ixgbe: add MDIO bus support")
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D61199
88b7b851210762af4827f71b2757a7d4673006a9 R. Christian McDonald 2026-11-10 12:48:01

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

twsi: Do not clear the interrupt flag when changing the control bits
twsi_control_set() and twsi_control_clear() read the control register,
change some bits and write it back.  On the controllers where the
interrupt flag is cleared by writing a 1 to it (iflag_w1c), this clears
it as the flag is read as set.

In the polled mode this breaks the repeated start: START is set with
the flag cleared by the write, the hardware sends the repeated start at
once, and the flag is then cleared a second time, which loses the event
and leaves the controller with the status of the previous transfer.
Transfers with a repeated start fail with IIC_ESTATUS on an Allwinner
H6 until the controller works with interrupts.

Mask the flag out of the value that is written back, unless the caller
asks for it.

Tested on: H6
5e62bf3403379c92cf42fc33bb462b6fb7e54425 Emmanuel Vadot 2026-11-10 09:09:07

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

aw_rsb: Accept a write in a single message
The driver only took a write as two messages, the offset and then the
data.  A write on an I2C bus is a single message that starts with the
register, which is how a driver that can be on I2C or on RSB, like
axp81x, does it.  Split such a message into the two the controller
needs.

Tested on: A64
09624daf6485be05dee9d6110b0488589da06e20 Emmanuel Vadot 2026-11-10 08:34:49

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

Commit group #3: axp81x
axp81x: Move the sensors, sysctls and thresholds out of attach

Add one function for each of them: axp8xx_add_sensors(),
axp8xx_add_sysctls() and axp8xx_get_thresholds().

No functional change. This is a preparation to support PMUs without a
battery, like the AXP805, with this driver.
5065335ab4df5ce0cebe850758769f92190f79fb Emmanuel Vadot 2026-11-10 07:49:59

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


axp81x: Move the interrupt setup out of attach

Add axp8xx_setup_intr() which enables the interrupts and installs the
handler.

No functional change.
3e9384b3c3c5f9d32777024a069e8222e0cb2600 Emmanuel Vadot 2026-11-10 07:52:32

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


axp81x: Fix the register accesses

The register pointer was written without IIC_M_NOSTOP, so the controller
sends a STOP before the read message. On the Allwinner H6 (twsi) this
makes the reads return garbage without any error.

Set IIC_M_NOSTOP on it, and send the register and its value in a single
write message, like the other PMIC drivers do.

Tested on: A64, H6
07448cd0c6341793406fa0d7a2f33401be01c7a3 Emmanuel Vadot 2026-11-10 07:54:22

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


axp81x: Serialize the register accesses

The registers were accessed with iicbus_transfer(), which does not own
the bus.  The interrupt driven transfers of the Allwinner twsi
controller drop their mutex while they sleep waiting for the interrupt,
so two accesses can overlap, and the PMU shares its bus with other
devices, an RTC for instance.  Use iicbus_transfer_excl() so that the
accesses are arbitrated.

The regulators share the enable registers and the regulator framework
only serializes the accesses to a single regulator.  Protect the
read-modify-write of these registers with a lock, so that regulators
enabled at the same time cannot lose each other's update.

No failure was seen without this, it is there for correctness.

Tested on: A64, H6
40256923a2bd1e316fbfbfac692d58947ab40262 Emmanuel Vadot 2026-11-10 08:00:54

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


axp81x: Check the errors of the register accesses

axp8xx_regnode_enable() wrote back a value computed from a register it
failed to read, which clears the enable bits of all the other
regulators of that register.  Return an error instead, and do the same
in the other regnode methods, which used an uninitialised value when an
access failed.

Also initialise udelay in axp8xx_regnode_init(), as
axp8xx_regnode_set_voltage() can now fail before setting it.

Tested on: A64, H6
e41207729840f817a45a1db9894c5d633f541009 Emmanuel Vadot 2026-11-10 08:25:57

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


axp81x: Add a function to get the regulator definition

Move the lookup of the regulator definitions out of axp8xx_attach().
This also fixes an off-by-one: the test was i <= nitems(common), so the
first regulator of the per-chip table (dc1sw or dcdc7) was never
registered and one entry past the end of the common table was read.

Tested on: A64
d0fb805c33608f8068e3e1dbfc5e762893679233 Emmanuel Vadot 2026-11-10 07:54:53

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


axp81x: Get the voltage of the regulators with a single range

axp8xx_regnode_get_voltage() failed when the regulator has no second
step, which is the case of the ones with a single range. Only the first
step is mandatory, as in axp8xx_regnode_set_voltage().

Tested on: A64, H6
5ca038636a54c3d7504123fde00aa78c4169440f Emmanuel Vadot 2026-11-10 07:55:06

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


axp81x: Do not change the voltage of a regulator in range

axp8xx_regnode_init() set every regulator described in the FDT to its
minimum voltage, even if the firmware had already set a voltage in the
range. For a regulator that is in use, like the one of the CPU, this can
make the system crash. Only set the voltage when the current one is out
of the range.

Tested on: A64, H6
7ea71c136c209e1aea05afb08f59c8917cff8325 Emmanuel Vadot 2026-11-10 08:02:41

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


axp81x: Skip the regulators that have no name in the FDT

A regulator that is not used is described in the FDT by a node without
regulator-name, and regulator_parse_ofw_stdparam() fails for it, which
printed two errors at every boot.  Skip these nodes, and only tell about
it when booting verbose.
4c501475359f162e80ff5eba7a5c53c06e5853a0 Emmanuel Vadot 2026-11-10 08:46:46

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


axp81x: Add support for the AXP805 and AXP806

The AXP805 and AXP806 are regulator only PMUs, with different registers
than the AXP803 and AXP813, and without a battery, ADC sensors or GPIO.
Add the regulators (voltage ranges from the datasheet and the Linux
driver) and the interrupts: the power key short press powers the system
off and the die temperature is sent to devd.  The battery, sensors,
thresholds, shutdown handler and GPIO bus are not set up for them.

Tested on a Pine H64 (AXP805 on the R_I2C).
79fbc233102e7cbe969a8bd21d65d843a8d2b9f6 Emmanuel Vadot 2026-11-10 07:56:16

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

libpmc: Strip leading zeros from the cpuid model
Upstream's mapfile.csv lists models without leading zeros, so entries
for models below 10h had to be fixed up by hand on every import.  Strip
them before matching and use the entries as imported.

Add tests to validate the functionality.

Reviewed by:    mhorne, Ali Mashtizadeh <ali@mashtizadeh.com>
Sponsored by:   Advanced Micro Devices, Inc.
MFC after:      1 week
Signed-off-by:  Osvaldo Janeri Filho <ojanerif@amd.com>
Differential Revision:  https://reviews.freebsd.org/D60790
c5400dc5421cce1be7152f401dc09725036d0963 Osvaldo Janeri Filho 2026-11-10 15:50:57

debug: classified in 03-filenames_plain1 by 'lib/libpmc/'

asmc: do not enable the sudden motion sensor on the MMIO backend
The interrupt filter reads the PIO interrupt port, but sc_ioport is NULL
under MMIO; the capability test only probed for keys, which says nothing
about the backend.

No MMIO-capable machine has a sudden motion sensor anyway. It existed to
park the heads of spinning disks.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D61383
2764bc54d5d35838c2aeccbfd2632625067283a5 Abdelkader Boudih 2026-11-10 16:12:06

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

tpm_crb: Use locality registers only with plain CRB
The locality release wait times out on every command on a Framework 13
(Pluton start method), logging every 10 seconds.

Reported by:    emaste, tuexen
Reviewed by:    kbowling
Approved by:    kbowling
Fixes:          https://cgit.freebsd.org/src/commit/?id=bfe4be85a935 ("tpm_crb: wait for idle and locality release after each command")
1dade7024457ee10df1ccae22e3c454e80f82b76 Olivier Cochard 2026-11-10 07:25:06

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

axgbe: bound the sysctl parser writes in get_val()
Reject tokens and option counts that exceed the fixed parser buffers,
and fix the terminating NUL offset. Have the sysctl handlers propagate
parser errors before applying settings.

Handle SYSL_U32 options and reject failed numeric conversions instead of
using an uninitialized value. Fix the duplex case falling through to an
error, and initialize the link-setting strings for unexpected speeds.

MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61339
5523a8ba6f618fa5c853450dd551d8a5f06715ca Osvaldo Janeri Filho 2026-11-10 19:09:29

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

axgbe: return positive errno values from the sysctl handlers
Return positive errno values from the FreeBSD sysctl handlers so that
userland reports the proper error instead of "Unknown error: -22".

Convert the negative phy_config_aneg() result at the sysctl boundary,
matching axgbe_if_media_change(), and retain the PHY code's internal
error convention.

MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61400
c89613ded9237811d35a42788e9728fe0404e26b Osvaldo Janeri Filho 2026-11-10 19:15:02

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

acpi_video: fall back to _BCL when _DOD matches no output
vid_enum_outputs() only registers a child whose _ADR appears in the
graphics controller's _DOD. _DOD is filled in from the graphics driver's
ACPI opregion on some platforms, so with no such driver attached it can
describe no device at all while the panel still implements _BCL, _BCM and
_BQC. The match then fails for every child and the machine is left with
no brightness control.

Fall back to registering the first child that implements _BCL when _DOD
matched nothing, so such a machine gets a working
hw.acpi.video.lcd0.brightness and the brightness keys that ride on it.

MFC after: 1 week

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D60826
09a79e9eb4d902e31f699fe5bd634c00138586e0 Abdelkader Boudih 2026-11-10 19:22:27

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

acpi_video: dim the internal panel while the lid is closed
Register an acpi_lid_event consumer that saves the current _BQC level and
drives _BCM to the lowest level _BCL offers when the lid closes, putting
the saved level back when it opens.  Only an output already classified as
an internal panel is touched, and only a level this handler dimmed is
restored, so a brightness change made while the lid was shut survives.

Disabled by default; set hw.acpi.video.lid_blank=1 to enable.

Reviewed by:    adrian
Differential Revision:  https://reviews.freebsd.org/D60827
6066c7907be3ee6246b0dc7f5d980e10ac181e45 Abdelkader Boudih 2026-11-10 19:22:37

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

mlx5: add per-flow-group hash table for FTE lookup
lookup_fte_locked() scanned every FTE in a flow group with xa_next()
and memcmp() on each one.  A new RX TLS session always misses, so the
whole group was walked under the group lock for every insertion.  With
tens of thousands of RX-offloaded sessions in the same IPv6 TCP group
this costs milliseconds per call and grows linearly with the number of
FTEs.

Keep a hash table of the FTEs in each flow group, keyed by a jhash of
the match value.  The table is sized from the group size, capped at
16K buckets.  It is updated in insert_fte() and del_sw_fte(), both of
which hold the group write lock, and read in lookup_fte_locked() under
the group read or write lock.  The xarray is kept for index
allocation.  No lockless reads are introduced.

Reported by:    NetApp
Reviewed by:    kib
Sponsored by:   NVidia networking
MFC after:      1 week
2d5a6bc2a4c5eb061f8d63b7aaff7dc04e96f1ea Slava Shwartsman 2026-10-26 19:27:56

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

acpi_cpu: No longer disable idle during suspend
This had been introduced in 3331373ce733 ("Disable CPU idle states
during suspend and reenable them during resume.") to work around C-state
selection logic which would skip C-states which returned immediately,
considering them "broken".

This workaround is incompatible with suspend-to-idle however, which
requires CPUs to be in their idle states, and is no longer relevant
either way since b0baaaaecf1a ("Avoid comparing negative signed to
positive unsignad values.") removed the C-state skipping logic the
previous change was working around.

Reviewed by:    olce
Sponsored by:   The FreeBSD Foundation
Pull Request:   https://ron-dev.freebsd.org/FreeBSD/src/pulls/71
Differential Revision:  https://reviews.freebsd.org/D60649
427747fc16c9be5e4d4eb31a797d7854c4fd839f Aymeric Wibo 2026-02-25 09:39:05

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

acpi_cpu: Bring back setting BM_RLD on resume
enable_idle(), which was called on resume before 427747fc16c9
("acpi_cpu: No longer disable idle during suspend"), also set BM_RLD.

This commit brings back just setting BM_RLD on resume because some
firmware might not be doing this itself on some machines.

Reviewed by:    olce
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D61431
ff3f704d922a7e0c8c32525fa0ebfc5a6e397160 Aymeric Wibo 2026-11-11 11:09:28

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

arm64/gicv3: Expose the ACPI maintenance interrupt
The ACPI entry describing the maintenance interrupt INTID is already
available as "VgicInterrupt", but it is not exposed to the GIC driver.

Check that the value is valid and consistent between CPUs, then publish
it for the GIC driver to use under rid 0 if so.

Print a warning if the maintenance interrupt is configured to be
edge-sensitive in ACPI, as the GIC spec explicitly states "maintenance
interrupts are level-sensitive".

Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Reviewed by:    andrew
Sponsored by:   Arm Ltd
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2527
d4085297f4b5bcfed856ec059c6403796cc2fc9f Kajetan Puchalski 2026-11-02 16:44:10

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

arm64/vmm: vgic_v3: Register the maintenance interrupt
If one is available, register the maintenance IRQ so that vmm can
receive and process guest exits when the maintenance IRQ is asserted.

Since vmm and vgic can still operate without it, print a warning but
attach the vgic regardless if the maintenance IRQ cannot be registered.

Signed-off-by: Kajetan Puchalski <kajetan.puchalski@arm.com>
Reviewed by:    andrew
Sponsored by:   Arm Ltd
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2530
6b4a478057315e8b61935e062fd730298c559467 Kajetan Puchalski 2026-11-02 16:53:56

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

pmap: Fix some bugs around accounting of wired mappings
The amd64 and arm64 pmaps failed to decrement the count when tearing
down a 1GB largepage mapping.  The riscv pmap failed to decrement the
count when unwiring a superpage mapping.

Reported by:    alc
Reviewed by:    bnovkov, alc, kib
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61414
da507ac5503d9af35f5aff4a7a773f6a92746e4a Mark Johnston 2026-11-11 14:15:35

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

Networking

Network-related commands, library, and kernel.

netipsec: Do not leak the SAH when an SA is cloned
key_updateaddresses() gives the clone of an SA a new SAH reference when
the SA index comes from key_newsah() or key_getsah(), but nothing
releases the reference of the old SA: key_delsav() leaves the SAH alone,
because key_unlinksav() normally releases it, and an SA that is replaced
never goes through that.  The SAH then stays allocated for good, after
its SAs are flushed and after the vnet is destroyed, as an SADB_UPDATE
with a new address does each time an IKE daemon moves an SA.

The old SA cannot release the reference when it is replaced, since a
sender that still holds it reads its SAH.  Release it in key_delsav()
instead.  When only the NAT-T config changes, the clone used to take over
the reference of the old SA; take a new one in that case as well, so that
every SA holds its own.

Reviewed by:            kib, markj
MFC after:              1 week
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D61101
488bf44737722c27f2e93b5347648e76e86540df R. Christian McDonald 2026-11-09 15:30:12

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

Commit group #4: ipfilter: Only recalculate the UDP header when we have one
ipfilter: Only recalculate the UDP header when we have one

When ipf_nat_out processes NAT_DIVERTOUT (ipnat rdr statements)
it also fixes the checksum in the UDP header. Test for a UDP header
before adjusting its length.

While we are here, the length in the UDP header must be converted
from network byte order to host byte order. Add the missing ntohs().

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=296944
MFC after:      3 days
72cc9e3766f4222fa7fc462bc669dcf668e8b334 Cy Schubert 2026-08-26 05:27:28

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


ipfilter: Remove erroneous ntohs()

The original commit was wrong.  ipf_nat_builddivertmp() builds the UDP
template with the length in host byte order

M_DUP() copies that value unchanged. The old code was therefore correct.
It added fin_plen in host order and then did a single htons().

The original patch was discussed with Co-Pilot, which pointed out the
original bug. claude-opus-5-5 discovered the ntohs() error that
co-pilot suggested.

Interestingly this code had been running here for a couple of months.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=72cc9e3766f4
86861520613f99c85b5fbdf92b5c955a13ed6624 Cy Schubert 2026-11-09 23:13:21

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

netipsec: Release the SA inside the vnet context in AH and IPComp callbacks
The error paths of ah_input_cb(), ah_output_cb(), ipcomp_input_cb() and
ipcomp_output_cb() called CURVNET_RESTORE() before key_freesav() and
key_freesp().  When the callback runs on a crypto return thread, no
vnet is set after the restore, and key_freesav() panics with "vnet is
not set" on INVARIANTS kernels.  Without INVARIANTS, the last reference
would be released without a vnet.

Restore the vnet last, as the ESP callbacks do.

Reviewed by:            mjg
Fixes:                  https://cgit.freebsd.org/src/commit/?id=8a9269edd71a ("ipsec: sprinkle CURVNET_ASSERT_SET")
MFC after:              1 week
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D61386
5d2e81f29a8aa5b093cd2343c604466332eca2d4 R. Christian McDonald 2026-11-10 13:40:53

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

iflib: simplify TXQ_AVAIL
Simply the TXQ_AVAIL() macro to avoid using
get_inuse(txq->ift_size, txq->ift_cidx, txq->ift_pidx, txq->ift_gen)
and instead define it in terms of txq->ift_in_use.

Note that in_use is equivalent, because it is updated at the same time
as cidx/pidx and gen, and under the same serialization. The advantage
is that its cheaper due to using one read and no branches, and
safer, since unlocked reads get an atomic snapshot of availability,
but an unlocked read of multiple counters can produce inconsistent
results.

Reviewed by: kbowling, kgalazka
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D61279
44df82b11c535ae50b1e5888a361a2bd15d4182b Andrew Gallatin 2026-11-10 15:37:00

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

iflib: rate limit deferred tx ring drain
When simple_tx gives up & return ENOBUFS because the tx ring is full,
we were doing a GROUPTASK_ENQUEUE(&txq->ift_task) each time.
On a tx ring that has overflowed and is being hammered on
by a fast UDP sender, this can result in a massive increase in
context switches (I've seen over 30M ctxw/sec due to this, and
the ctxsw codepath taking roughly 50% CPU).

This change removes the GROUPTASK_ENQUEUE() and replaces it
with a call to a callout which drains the tx ring. The callout time is
determined based on the link speed, estimating how long it would take
for a large fraction of of a ring containing full-MTU packets to drain.

This removes the 30M ctxsw / sec in my test case and reduces it
to roughly a doubling of ctxsws.

Reviewed by: kbowling
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D61313
fe63435bdfae0ec55092efbfa807e324bfb82d75 Andrew Gallatin 2026-11-10 15:42:11

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

krb5: Import MIT 1.22.3
Major changes in 1.22.3 (2026-11-09)
====================================

This is a bug fix release, with a focus on security issues discovered
with the aid of large language models.  See
https://web.mit.edu/kerberos/advisories/MITKRB5-SA-2026-001.txt for
information on the risks of continuing to use unpatched releases.

* Fix a logic error when checking PAC server checksums
   [CVE-2026-111423].

* Check for unkeyed checksums when validating CAMMAC verifiers
   [CVE-2026-71199].

* Fix a loophole in the KDC's client authdata filtering which could
   allow clients to include fake PAC and CAMMAC authdata values when
   requesting service tickets.  These fake values would be rejected by
   application servers, were it not for the two bugs noted above.

* Check for the lockdown_keys attribute when processing password
   change protocol requests in kadmind [CVE-2026-107884].

* In libgssrpc, when processing RPC messages using the RPCSEC_GSS
   flavor, use the verified service type included in the RPC request to
   determine how to unwrap arguments and wrap return values, instead of
   the unverified service type included during authentication
   [CVE-2026-118380].

* In libgssrpc, disable the AUTH_GSSAPI server auth flavor unless the
   "GSSRPC_ALLOW_AUTH_GSSAPI" environment variable is set.  AUTH_GSSAPI
   is only needed for very old (pre-1.4) clients [CVE-2026-112322]
   [CVE-2026-112323].

* Fix numerous null pointer deferences, read overruns, unbounded
   memory allocations, and memory leaks that could be used as denial of
   service attacks against the KDC, kadmind, application servers, or
   client programs [CVE-2026-40355] [CVE-2026-40356] [CVE-2026-71200]
   [CVE-2026-107364] [CVE-2026-107708] [CVE-2026-107778]
   [CVE-2026-112314] [CVE-2026-112315] [CVE-2026-112316]
   [CVE-2026-112317] [CVE-2026-112318] [CVE-2026-112319]
   [CVE-2026-112320] [CVE-2026-112321] [CVE-2026-112323]
   [CVE-2026-119079].

* Fix a client crash when a KKDCP proxy daemon closes the TLS session
   without supplying any response data.

* Shut down kpropd gracefully when a termination signal is received,
   when operating in incremental propagation mode.

* Detect when an incremental propagation update is applied to a
   nonexistent principal; when this happens, force a full resync
   instead of crashing.

* Fix a KDC crash when the LDAP KDB module loses its connection to the
   LDAP server.

* Avoid a crash on macOS when the native API ccache type is used
   before and after forking a process.

* When an application accepts a GSS context without asking for
   delegated credentials, discard any credentials sent by the initiator
   without parsing them first.

Security:       https://web.mit.edu/kerberos/advisories/MITKRB5-SA-2026-001.txt
MFC after:      3 days
Merge commit '5f11ec7e8ab9647977a56fca934c40951e051779' into krb5-1.22.3
7e4c0a34ea3aff51405d2a3ac2908db1a98d6c5f Cy Schubert 2026-11-10 05:13:11

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

netipsec: Release the sahtree lock on the AH and IPComp EAGAIN paths
183513d15f22 made the AH, ESP and IPComp input callbacks hold the
sahtree read lock, but only esp_input_cb() drops it before resubmitting
a request that the crypto framework completed with EAGAIN.
ah_input_cb() and ipcomp_input_cb() return with the lock still held.

crypto_invoke() completes requests with EAGAIN while their driver
detaches.  Detaching ossl(4) under inbound AH traffic then hangs the
next rmlock writer, and the system panics with "spin lock held too
long" in smp_rendezvous_cpus() called from _rm_wlock().

Release the lock as esp_input_cb() does.

Reported by:            llm-postcr
Reviewed by:            kib
Fixes:                  https://cgit.freebsd.org/src/commit/?id=183513d15f22 ("sys/netipsec: ensure sah stability during input callback processing")
MFC after:              1 week
Sponsored by:           Rubicon Communications, LLC ("Netgate")
Differential Revision:  https://reviews.freebsd.org/D61399
2af08ab3f125ce5988a641c32c777afc52f917e1 R. Christian McDonald 2026-11-11 02:31:22

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

System administration

Stuff in man section 8 (other than networking).

stand: ufs directory corruption sanity checks
Add sanity checks for corrupt UFS directory blocks.  Don't allow bad
data to cause buffer overflows or infinite loops.

Reviewed by:    dab, imp (previous version)
Differential Revision:  https://reviews.freebsd.org/D59378
cbd7e7fa5327fe91d5a6649b92f8f2e2fb383e87 Ryan Libby 2026-11-09 17:15:54

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

stand: check for short reads in ufs
Reviewed by:  imp, jhb
Differential Revision:  https://reviews.freebsd.org/D59379
897d3ae913452b1832322da625a5dcc7b29ecfc6 Ryan Libby 2026-11-09 17:15:55

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

camcontrol: Fix swapped protection information defaults in nvformat
When no -p or -l arguments are given, the nvformat subcommand fills
in the protection information type and location from the
namespace's current settings.  The two were swapped: pi was taken
from the DPS metadata location bit and pil from the protection
information type field.  Formatting a namespace with protection
information enabled would therefore silently change its PI
settings, and before the Format NVM command builder masked its
fields, a namespace with PI type 2 enabled would set bit 9 of
cdw10, turning the format into a user data erase.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=80f090111ae4
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
ef69484b4295e84c74877b439db5caf025906b0c Kenneth D. Merry 2026-11-09 18:46:59

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

camcontrol: Require a reservation type for reserve, preempt and release
res_type was initialized to 0, but the checks that enforce the -T
argument for the reserve, preempt and release reservation actions
compare it against -1, so they could never fire and camcontrol
silently sent a reservation type of 0, which is invalid.
Initialize res_type to -1 so the checks work, and default the
reservation type to 0 for the release action's clear variant,
which does not take -T and ignores the field.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=ba75cf05727e
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
b95e2b2ce907cde89bc3e7be2ffeae03cfed55ab Kenneth D. Merry 2026-11-09 18:47:00

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

camcontrol: Don't close the CAM device in nvme_get_data()
nvme_get_data() closed the supplied CAM device on every error
path, but its callers either pass the device that main() opened
and closes, or close the device themselves, so an error resulted
in a double cam_close_device() and a double free.  Move the error
path close into print_dev_nvme(), the one caller that opens its
own device, and leave the device alone in nvme_get_data().

This predates the recent camcontrol NVMe additions, but they added
more callers.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=6ee13c54dad0
MFC after:      1 week
Sponsored by:   Spectra Logic
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
f7c24ef1e9a47b889eaaae8514c61e95d9738cf8 Kenneth D. Merry 2026-11-09 18:47:01

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

pw: reject ' and ` in user/group names
pw_checkname() already refuses $ ( ) and freinds, but backtick and
single quote slipped thru, so `pw useradd 'foo`id`'` went in just
fine. Thats command substitution in any unquoted context. Add both
to badchars, plus a test.

Reported by:    Harry Sintonen (Reversec)
Sponsored by:   Entersekt
MFC after:      2 weeks
Approved by:    bapt
Differential Revision:  https://reviews.freebsd.org/D61392
1de93128e75a8571f0fcefc3394d2f875adf970f Muhammad Moinur Rahman 2026-11-10 14:15:10

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

tests/sys/pmc: add pidtrack, callchain, pmc(8), RAPL and AMD tests
Add to the suite of ATF tests for hwpmc(4).  Vendor-neutral tests go in
tests/sys/pmc; tests that depend on AMD hardware interfaces go in
tests/sys/pmc/amd, which is only built on amd64.

tests/sys/pmc:
  pmc_pidtrack_test      process-mode PMCs follow their PID: a live
                         self-read counts the process' own work, an idle
                         process sharing the CPU with a busy one does not
                         pick up its work, and the count survives a
                         context switch
  pmc_callchain_ur_test  pmcstat -U collects user callchains through the
                         PMC_UR ring; regression test for the KASSERTs
                         fixed in rGaf3929c5152b and rG66118c3f1011
  pmc_cli_test           pmc(8): missing log, list-events, record/info
                         round trip with the "instructions" alias
  pmcstat_tsc_test       (amd64) tsc_freq in the initlog record, TSC
                         column of pmcstat -R, tsc in pmc filter -j,
                         pmcstat -G callgraph
  pmc_rapl_test          (amd64) RAPL class: 64-bit counters, system
                         mode only, PKG and CORES energy increase under
                         load

tests/sys/pmc/amd:
  pmu_detect_test        K8 class with 48-bit counters, at least six core
                         counters, TSC class alongside it
  pmu_event_test         pmu-events lookup and EventSelect/UnitMask/OS/USR
                         encoding checked against the amdzen1..amdzen6
                         tables; ex_ret_instr counts a known loop
  pmu_event_neg_test     raw PMCALLOCATE rejects an otherwise valid config
                         word with HOST, GUEST, HOST|GUEST, reserved bit
                         44 or PRECISERETIRE without PMC_CAP_PRECISE
                         (pmc_exterr_test covers an all-ones config word)
  pmu_mux_test           every core counter that CPUID reports can be
                         held at once, one more is refused, a released
                         one is reusable
  rapl_domains_test      AMD RAPL has at most PKG and CORES rows and no
                         DRAM domain
  pmc_frontend_test      pmc(8) frontend study on IBS fetch samples
  amd_pmc_test_common.h  CPUID-based Zen generation detection and helpers

Reviewed by:    mhorne
Discussed with: netchild
MFC after:      1 month
Sponsored by:   Advanced Micro Devices, Inc.
Signed-off-by:  Osvaldo Janeri Filho <ojanerif@amd.com>
Differential Revision:  https://reviews.freebsd.org/D59549
546a7646312352237e49c3a7144e967d2e89b044 Osvaldo Janeri Filho 2026-11-10 16:00:39

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

pwd_mkdb: validate login names
vipw(8) never looked at names, it just hands the file to pwd_mkdb,
and pwd_mkdb only cared abuot the field layout. So something like
`user1$(id$IFS-A)` in master.passwd went straight into the db.

Do the same check pw(8) does, in scan(), so vipw, chpass and hand
edits all hit it. NIS +/- entries get checked after the prefix.
Bail out rather then warn; a file with junk names wont rebuild
anymore, whcih is kinda the point.

Add tests while here.

Reported by:    Harry Sintonen (Reversec)
Sponsored by:   Entersekt

Approved by:    bapt
MFC after:      2 weeks
Differential Revision:  https://reviews.freebsd.org/D61405
b15b789d93c804f30896ddd568af13a475a0d972 Muhammad Moinur Rahman 2026-11-10 14:15:10

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

bsdinstall: Set TMPDIR in pkgbase install
The FreeBSD-base repository (aka "pkgbase") is now created using 'pkg
repo -l' in order to make 'pkg rwhich' work.  Unfortunately this makes
the data.pkg file considerably larger, and FreeBSD 15.2-BETA1 fails to
install using a remote repository since the installer has a small /tmp
(20 MB).

Run pkg commands with 'env TMPDIR=<chrootdir>/tmp' since the /tmp in
the system being installed is considerably larger than the tmpfs which
the installer runs with.  Create <chrootdir>/tmp first so we can ensure
it has 1777 permissions.

Reviewed by:    bapt
MFC after:      1 day
Differential Revision:  https://reviews.freebsd.org/D61380
a7163bd76986282fdcb059b91301d3214da49642 Colin Percival 2026-11-10 02:34:43

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

Commit group #5: nvmecontrol: Mask the fields in the Format NVM command
nvmecontrol: Mask the fields in the Format NVM command

The format command composed cdw10 by hand without masking any of
the fields and with no support for the LBAFU field.  Since commit
2c41f7d8a034 the LBA format index defaulted from FLBAS can exceed
15 on an NVMe 2.0 namespace using FIDXU, and such an index would
bleed into the MSET and PI fields.  An out of range index supplied
with -f for a whole-controller format was not caught either.

Build the command with nvme_admin_format_cmd(), which masks all of
the fields and encodes LBA format indexes above 15 in LBAFU, and
reject LBA format indexes greater than 63 for whole-controller
formats.  Per-namespace formats already validate the index against
NLBAF.

This is the same problem that llm-postcr reported in camcontrol's
copy of this code, fixed in 3892a6453fc6; the unmasked composition
originated here (635c517ae9ca).

Reported by:    llm-postcr
Reviewed by:    imp
Fixes:          https://cgit.freebsd.org/src/commit/?id=2c41f7d8a034
MFC after:      1 week
Sponsored by:   Spectra Logic
Assisted-by:    Claude Fable 5 <noreply@anthropic.com>
Differential Revision:  https://reviews.freebsd.org/D61356
eae727676169de58052fd512ebb0ee565ad6e246 Kenneth D. Merry 2026-11-09 19:35:00

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


nvmecontrol: Range-check the format command's field values

The format command accepted any 32-bit value for -m, -p, -l and
--ses and passed it into the Format NVM command.  Before
eae727676169 an out-of-range value spilled into the adjacent cdw10
fields, which usually drew an error from the controller; after it,
the value is masked to the field width, so a mistyped value is
silently accepted with a different meaning.  Most seriously,
--ses 8 masked to SES=0 and performed a plain format with no erase
at all, exiting 0.  A value like --ses 10 masked to a cryptographic
erase while bypassing the FNA cryptographic erase capability check,
which compares the unmasked value.

Reject values outside the ranges nvmecontrol.8 documents, which are
the values the spec defines: 0-1 for -m and -l, 0-3 for -p, and
0-2 for --ses.  The checks run at option validation time, before
the device is opened, and the capability check now only ever sees
valid values.

While here, document --ses in nvmecontrol.8; it was missing from the
format subcommand's option list.

Reported by:    llm-postcr
Reviewed by:    imp
Fixes:          https://cgit.freebsd.org/src/commit/?id=eae727676169
MFC after:      1 week
Sponsored by:   Spectra Logic
Assisted-by:    Claude Fable 5 <noreply@anthropic.com>
Differential Revision:  https://reviews.freebsd.org/D61406
3d6f886151f9ee6f3bf16ea3367a4b540df3f911 Kenneth D. Merry 2026-11-10 21:12:21

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

ppp: bound IPCP IP-Address replies to the reply buffers
`ipcp_ValidateReq()` appended `IP-Address ack/nak/reject` records to the fixed `fsm_decode` buffers without a bound check. A `Config-Request` with ~17 or more `IP-Address` options overran a buffer into its own end pointer, so later writes could go wherever the peer chose.

Emit the option through `fsm_ack()/fsm_nak()/fsm_rej()` like the other options.

Reviewed by:    markj
Approved by:    adrian (mentor)
Signed-off-by:  Nick Price <nprice@FreeBSD.org>
Differential Revision:  https://reviews.freebsd.org/D61326
dfdc0cfda058ea8ff8ed3ef1a7e249786627029f Nick Price 2026-11-11 02:26:56

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

rc: Generate ML-DSA44/Ed25519 host keys by default
Commit bd9d7cdd1420 ("OpenSSH: Update to 10.5p1") introduced support for
ML-DSA44/Ed25519 host keys.

Generate these keys by default when the sshd service is first started.

Reported by:    Herbert J. Skuhra
Reviewed by:    emaste
Differential Revision:  https://reviews.freebsd.org/D61433
74ae9accdc2f9be13c8dab27c94ed42f6a7c8360 Jose Luis Duran 2026-11-11 14:41:47

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

nuageinit: Add support for uid
Adds support for specifying an explicit UID when creating users through nuageinit. Both numeric and string UID values are supported. Invalid or negative UIDs are rejected. The new uid option is documented in nuageinit(7). Existing automatic UID allocation remains unchanged when no UID is specified. A UID already in use or out of range is left to pw(8) to reject.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=293716
Reported by:    Einar Bjarni Halldórsson <einar@isnic.is>
Reviewed by:    dtxdf, bapt
Signed-off-by:  Kushagra Chauhan <zenzesama@gmail.com>
Differential Revision:  https://reviews.freebsd.org/D61174
eca5b28692eac5ae597eff6a13629c17c1e40ace Kushagra Chauhan 2026-11-03 23:48:00

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

bhyve: rfb: do not destroy a mutex that was never initialized
rfb_init()'s error path tests pixfmt_mtx against NULL, which only
compiles where pthread_mutex_t is a pointer, and destroys it.  Every
jump to that label is before the mutex is initialized, so there is
nothing to destroy.  The test and the destroy came in with the
SetPixelFormat support (D46402).

Signed-off-by:  Wanpeng Qian <wanpengqian@gmail.com>

Fixes:          https://cgit.freebsd.org/src/commit/?id=dda0f9837b1c ("bhyve: support noVNC SetPixelFormat request")
Reviewed by:    markj
MFC after:      1 week
Sponsored by:   keelos.dev
Differential Revision:  https://reviews.freebsd.org/D61425
e1e4790d7de20f28683031ac806adb6abbafe867 Wanpeng Qian 2026-11-11 15:05:50

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

bhyve: nvme: initialize the AEN condition variable
aen_cond is used with pthread_cond_wait() and pthread_cond_signal() but
never initialized.  That works where a zeroed pthread_cond_t is
initialized on first use; elsewhere pthread_cond_wait() fails at once
and aen_thr() spins with aen_mtx held.

Signed-off-by:  Wanpeng Qian <wanpengqian@gmail.com>

Reviewed by:    markj
MFC after:      1 week
Sponsored by:   keelos.dev
Differential Revision:  https://reviews.freebsd.org/D61424
b3860403a7cfbd32e4b21f214c2d3a46ef1a27b9 Wanpeng Qian 2026-11-11 15:06:53

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

Libraries

openssl: export only the engine entry points
Upstream links every dynamic engine with a version script,
engines/<name>.ld, that exports bind_engine and v_check and makes
everything else local.  FreeBSD's engines had no version script, so
they exported every global symbol, including _init and _fini.
loader_attic.so compiles its own copy of crypto/pem/pvkfmt.c and so
also exported 21 of its functions; 14 of them (b2i_*, i2b_*) have the
same names as public libcrypto functions.

Add one Version.map for all engines, the same as upstream's, and use it
from engines/Makefile.inc.

The engines are loaded only with dlopen(), and libcrypto looks up only
bind_engine and v_check, so hiding the other symbols does not affect
any consumer.

Tested via tinderbox: capi.so, devcrypto.so and loader_attic.so link
with --no-undefined-version and export only bind_engine and v_check.
devcrypto lists the same ciphers as before, and loader_attic loads and
reads a PVK RSA key through "openssl storeutl -engine loader_attic".

Reviewed by:            ngie
MFC after:              1 week
MFC to:                 stable/15
Event:                  FreeBSD Vendor Summit 2026
Differential Revision:  https://reviews.freebsd.org/D61273
769c49de261fbbd1293adab9188e5099516675cf Gordon Tetlow 2026-11-09 05:39:08

debug: classified in 03-filenames_plain1 by 'secure/lib/'

Commit group #6: libcasper: Use pdfork() for the zygote
libcasper: Use pdfork() for the zygote

Use pdfork(2) rather than fork(2) to fork the zygote, and close the
descriptor when the main loop terminates.

MFC after:      1 week
Sponsored by:   Klara, Inc.
Sponsored by:   Qualys, Inc.
Reviewed by:    oshogbo
Differential Revision:  https://reviews.freebsd.org/D60176
425e4c102f8aedfc7c439bb01d648aabac798888 Dag-Erling Smørgrav 2026-11-09 22:13:42

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


libcasper: Use casper_pdfork()

Fixes:          https://cgit.freebsd.org/src/commit/?id=425e4c102f8a ("libcasper: Use pdfork() for the zygote")
d0fd70983b6b93d4a6a4671457619eb34786b38d Dag-Erling Smørgrav 2026-11-09 22:45:00

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

libthr: fix __thr_pshared_offpage() to not use cancellable close()
__thr_pshared_offpage() is used by pthread functions that must not be
cancellation points according to POSIX.  Use direct __sys_close() instead
of interposed close() there.

Fixes:  https://cgit.freebsd.org/src/commit/?id=1bdbd705993e ("Implement process-shared locks support ...")
Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61343
e55d4398708623522ce773e0cd118180e2ee17fe Konstantin Belousov 2026-11-09 17:10:45

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

libthr: explain why pshared lock bumps locklevel
Reviewed by:  markj, aokblast
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61343
eff19ace066f133ed85a0e0c6cae5777d4b7db99 Konstantin Belousov 2026-11-09 16:37:11

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

lib/libthr: add helper to check valid clockid to use with _umtx_op(2)
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
62e53516f73247d2ed80d8dc452f02d9a92575a0 Konstantin Belousov 2026-11-05 20:39:40

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

pthread_cond_clockwait(3): explicitly reject unacceptable clockids
Otherwise they are rejected by kernel in do_wait(), reached through
_thr_sleep()/UMTX_OP_WAIT_UINT_PRIVATE on the user-mode path. Then,
since cond_wait_user() only leaves its loop on a wakeup, a cancellation
or ETIMEDOUT, the EINVAL from do_wait() results in a loop.

If hit, this indicates a bug in user code, but the system library
must be resilient to such misuse.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
8331d5a2fe967016343fb4322f1ed73e55ff9655 Konstantin Belousov 2026-11-05 21:38:37

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

libthr cond_wait_user(): do not loop forever on clock error
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
e81badcfc010268d4935f4b4d28ebdbc0faebe0f Konstantin Belousov 2026-11-06 00:46:06

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

pthread_mutex_timedlock(3): return EDEADLK on detected recursion attempt
for ERRORCHECK and ADAPTIVE_NP mutexes, instead of ETIMEDOUT. This is
explicitly specified by POSIX.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
bf2939ea60872d7791987d1727798e90eb904279 Konstantin Belousov 2026-11-05 22:01:18

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

libthr: add pthread_mutex_clocklock(3)
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
b7c2db4c772ba3c61f4760eca011332c9c12da1c Konstantin Belousov 2026-11-05 17:23:49

debug: classified in 05-summary-prefix by 'lib.*:'

libthr: add pthread_rwlock_clock{rd,wr}lock(3)
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
5577567bd0d0c695c25ddb4ea32b8c8231d8b0fe Konstantin Belousov 2026-11-05 17:24:12

debug: classified in 05-summary-prefix by 'lib.*:'

libthr: add tests for pthread_mutex_clocklock(3)
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
7689242d6bdf7f8633885795e6528f9d8f2f2428 Konstantin Belousov 2026-11-06 01:37:09

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

libthr: add tests for pthread_rwlock_clock{rd,wr}lock(3)
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
083b44ddc07c6e07bcf889aa1f38c240d9dc0fc6 Konstantin Belousov 2026-11-06 01:38:17

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

libthr mutex_self_lock(): handle signals and clock steps
Relocking an owned NORMAL mutex with an absolute timeout has two issues:
- nanosleep(2) is never restarted, so any caught signal causes
  an early ETIMEDOUT.
- If CLOCK_REALTIME or CLOCK_TAI are stepped backward during the sleep,
  the call also returns ETIMEDOUT before the clock reaches the deadline.

The kernel already polls CPU-time clocks and handles realtime steps.
Use _thr_umtx_timedwait_uint() in a loop to handle both issues.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61381
1b4779eef93c6e3c9af1887b941d7700ef143951 Konstantin Belousov 2026-11-10 03:07:01

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

libfetch: Prepare for OpenSSL 4
* Always use libmd's MD5 since it's deprecated in OpenSSL.

* Use ASN1_STRING_get_length() instead of ASN1_STRING_length().
51d910a3e0b42e7d147f49776021a868330a1a8a Gordon Tetlow 2026-11-10 13:48:11

debug: classified in 05-summary-prefix by 'lib.*:'

Filesystems

-- no commits in this category this week --

Kernel

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

cryptodev: zero key material before freeing it
The /dev/crypto cipher and MAC keys are copied from userland and
released with free(), leaving the key bytes in freed kernel memory.
Use zfree() so the key material is cleared on session teardown and on
the setup error path.

Reviewed by:    markj
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61324
edaa6ba7be8666d4f543317845899e1a1b684bbf Osvaldo Janeri Filho 2026-11-09 00:50:17

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

linux: Bound native getdents and getdents64 batches
linux_getdents() and linux_getdents64() round their native read size up
to DEV_BSIZE before converting entries. For an unaligned caller buffer,
the native batch can contain more entries than fit in the Linux buffer.
Conversion then returns EINVAL even after copying complete entries,
and the native read has already advanced the directory position.

For counts of at least DEV_BSIZE, use min(args->count, MAXBSIZE) instead.
A 768-byte request, such as rustix's initial directory read, now uses a
768-byte native buffer rather than 1024. The converted Linux dirent and
dirent64 records are no larger than their native counterparts, so the
whole translated batch fits. Returning a short batch is allowed, and
consuming the whole native batch avoids needing to rewind the directory
position.

Keep the existing sizing for counts below DEV_BSIZE. This fixes the
oversized-batch case in both getdents interfaces, including legacy
getdents for 32-bit and 64-bit callers. The remaining small-buffer,
copyout-failure and old single-entry readdir problems are outside the
scope of this change.

Fixes:  https://cgit.freebsd.org/src/commit/?id=110f2567cb51 ("linux_file.c: Fix handling of NFS [...]")
MFC after:      3 days
Sponsored by:   Alchemilla Ventures Private Limited
Reviewed by:    kevans, markj
Differential Revision:  https://reviews.freebsd.org/D60760
ec6629628cbed2816f27aed8a6d5f9eb3521c1c1 Hayzam Sherif 2026-11-09 03:06:11

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

kevent(2): add kern_kevent_generic
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
0a42a5c783beebdaee8fad0142c969a6c64e8b57 Brooks Davis 2026-11-09 11:07:57

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

wait4(2): add kern_wait4
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
2e3ba764b21f8f48ea2d48c0118a8f8e2eb4dd41 Brooks Davis 2026-11-09 11:07:57

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

wait6(2): add user_wait6
sys_wait6 is a little more complicated than typical as compat layers
need to translate siginfo_t.

Effort:         CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
52bd0d1812b6c3fb31db9709ff56393fb082046c Brooks Davis 2026-11-09 11:07:57

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

ffclock: add kern_ interfaces
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
d4775425c16ceb3933c45cfe1a78bbed0a6fdf92 Brooks Davis 2025-11-21 17:22:24

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

pdfork(2): add kern_pdfork
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
7c9060c7f38cf07908ee37baa0205848ea2bdaba Brooks Davis 2025-11-21 17:33:07

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

[ku]trace(2): add kern_[ku]trace
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
6189085715dbd71ba6aff1b965950f3331ba1128 Brooks Davis 2025-11-21 17:42:02

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

kern_linker.c: add kern_ implementations
kldsym(2) is more complex than typical because it requires translation
of struct kld_sym_lookup which is a weird in/out structure.  Out of
paranoia we avoid copying out the symname pointer in the capability
version to eliminate the possiblity of leaking a capability (but not
invalidating a pointer userspace might be using via copyout()).

Effort:         CHERI upstreaming
Sponsored by:   DARPA, AFRL, Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
58a758c2bbfe4beb48c44ae798f7eaaf3ef2aab7 Brooks Davis 2025-11-24 13:55:36

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

kern_loginclass.c: add kern_ implementations
Effort:               CHERI upstreaming
Sponsored by:   DARPA, AFRL, Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
133344405f532bd54ff3629a77d4c4e062f01fdb Brooks Davis 2025-11-24 14:16:16

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

linux: Allow connect() with destination port 0
Linux allows connect() with destination port 0, but FreeBSD returns
EADDRNOTAVAIL in in_pcbconnect() and in6_pcbladdr(). Some Linux programs
(e.g. the new Android CLI tool) rely on this for routability checks,
however.

Add an SV_CONN_PORT0 flag to sv_flags which is set in the Linux sysvecs,
allowing the port 0 guard in the connect paths to be bypassed.

Reviewed by:    glebius, kib
Differential Revision:  https://reviews.freebsd.org/D60659
dbeadd4326a05d6a972e6e319a580944e136f931 Aymeric Wibo 2026-09-25 13:20:19

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

link_elf_obj: bounds-check e_shstrndx in link_elf_load_file()
e_shstrndx is used to index the section header array after only being
checked against zero, so a malformed object can make the linker read up
to about 64K entries past the end of shdr[].  Reject such a file with
ENOEXEC, as link_elf_link_preload() already does.

Reported by:    llm-postcr
Reviewed by:    kib
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61321
f0683276b4334f4b7e7faf73471a2afe937a9f5d Osvaldo Janeri Filho 2026-11-09 23:18:01

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

link_elf_obj: validate symbol name offsets
A symbol name offset (st_name) indexes the string table in several
places without being checked against ddbstrcnt, so a corrupt object
causes an out-of-bounds read.  Check that the string table is
NUL-terminated and that every st_name lies within it, in both the
preload and file paths, and reject the object with ENOEXEC.

Reviewed by:    kib
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61322
4e2c2842e6f779edb44483dfcabe35acc64fe23e Osvaldo Janeri Filho 2026-11-09 23:18:27

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

link_elf: bounds-check the DT_HASH offset
parse_dynamic() builds the symbol hash table at ef->address + d_ptr
without checking that d_ptr lies within the mapped image, so a crafted
DT_HASH entry causes an out-of-bounds read of the hash header.  Reject
the object with ENOEXEC when the header does not fit in the image.

Reviewed by:    kib
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61323
ad8f475be2c5920f9a90145c071cba390a4ec6d2 Osvaldo Janeri Filho 2026-11-09 23:18:40

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

link_elf_obj: validate section name offsets
A section name offset (sh_name) indexes the section name string table
without being checked against shstrcnt, and the result is passed to
strcmp(), so a corrupt object causes an out-of-bounds read.  Check that
the table is NUL-terminated and that every sh_name lies within it, in
both the preload and file paths, and reject the object with ENOEXEC.

Reviewed by:    kib
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D61338
4b1963dbb36f9928097a6f26cf3aaff88573b77d Osvaldo Janeri Filho 2026-11-09 23:18:58

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

namei(9): fix restart for NDINIT_ATVP
namei() might restart for altroot or for ERESTART from
nameicap_tracker_add().

vfs_lookup() consumes the reference on ni_startdir and clears it, so
a restarted NDINIT_ATVP() lookup started from the current directory
instead of the vnode passed by the caller.

Save the starting vnode in a local variable, hold it while the lookup
can be restarted, and reference it before the restarted pass. Do not
assert NAMEI_DBG_HADSTARTDIR on the internal restart.

Noted and reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61315
2f3d64f63677a6ed4c7bb6629d92161555948038 Konstantin Belousov 2026-11-08 19:20:37

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

namei(9): allow NDINIT_ATVP() lookups in capability mode
NDINIT_ATVP() initializes dirfd to AT_FDCWD, which is denied for a
process already in cap mode.  Since NDINIT_ATVP() is a special lookup
operation performed by the kernel, it should be allowed to proceed for
the paths beneath vp.

Fabricate a pseudo dirfd value that is an unused placeholder,
which fails the AT_FDCWD comparison and allows the lookup to proceed in
cap mode.

Note that failed cap-mode NDINIT_ATVP lookup returned ECAPMODE without
releasing the caller reference on ni_startdir, which is fixed by this
change.

Reported by:    ivy
Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61315
922eaa623076b4b8878022b3cbad1bef1f023de8 Konstantin Belousov 2026-11-08 04:11:21

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

kern_umtx.c: validate clockid used for _umtx_op(2) timeouts
Only allow clocks that make sense for the umtx_sleep().

While there, do not ignore errors from kern_clock_gettime(). The invalid
clock ids are filtered, but if the clock can't be read (CLOCK_TAI before
the TAI-UTC offset is known), the functions operate on uninitialized
memory.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
524f1bf7f9fd8d5d0eee48346d6c1adb0413f95c Konstantin Belousov 2026-11-05 20:21:14

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

umtxq_sleep(): do not wait forever for zero absolute timeouts
For msleep(), zero sbt means no timeout. If the timeout was specified as
absolute {0, 0} on MONOTONIC/UPTIME clocks, consider the call timed out
immediately, instead of sleeping until a signal is delivered.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
8c13acc68517f785df4b6c4b016dfd1c6f38c8cf Konstantin Belousov 2026-11-06 00:09:12

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

sysent: add support for COMPAT15 syscalls
Sponsored by: DARPA, AFRL, Innovate UK

Reviewed by:    kevans
Differential Revision:  https://reviews.freebsd.org/D61342
57763e6eb45d97d437a4b2bdf07dd796e5bd7d80 Brooks Davis 2026-11-10 10:14:34

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

sysent: regen after adding COMPAT15 support
daa4c25953a75dab8d7d2fbdb822c00c48620d5c Brooks Davis 2026-11-10 10:14:59

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

kern_module.c: add kern_ implementations
In the case of modstat(2) use a cast to access the name member of the
old struct version so the compiler see the right array size.  This
addresses a sub-object bounds bug.

Effort:         CHERI upstreaming
Sponsored by:   DARPA, AFRL, Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
b96dc2c04fb4f504ad0c752c5d4b074c5bfbf7e0 Brooks Davis 2026-11-10 11:49:20

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

kern_prot.c: add kern_ and user_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
91e5dbdc4da68a1a1001efb47ccbc2257ad106ee Brooks Davis 2026-11-10 11:49:21

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

rctl_*(2): add kern_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
52830cb4e63d3bfbb1b6243acd98aa9ecb0cffef Brooks Davis 2026-11-10 11:49:21

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

rtprio*(2): add kern_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
985faddcb6edf7263202bd982a9204c1db66ac91 Brooks Davis 2026-11-10 11:49:21

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

getrlimitusage(2): add user_ implementation
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
e3bdb45e811fe9577fc187f45654d5003b970350 Brooks Davis 2026-11-10 11:49:21

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

kobj: Make the containers of pointers to base classes constant
The containers (arrays) will not be modified during runtime.

Reviewed by:    kib, imp
MFC after:      2 weeks
Differential Revision:  https://reviews.freebsd.org/D61297
8910f9e5a0cc378147d53c8440b97433671447ec Zhenlei Huang 2026-11-10 13:27:09

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

sig*(2): add kern_ and user_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
698ba43e0ec7a3cb107a4b14be6f781965b1d3c4 Brooks Davis 2025-11-24 15:33:34

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

__sysctl(2): add kern_ implementation
The flags argument will be used by compat impelementations.

Effort:         CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
23abe1880071fed7f422af9b556db87afe426070 Brooks Davis 2025-11-24 15:40:30

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

thr_set_name(2): add kern_ implementation
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
a81038c0dc02a7721e2a636013ae3e343966511e Brooks Davis 2025-11-24 15:51:26

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

kern_time.c: add kern_ and user_ implementations
Expose user_clock_nanosleep globally.

Effort:         CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
22f93edf2014e39cc96822d1bf2e4804350f266f Brooks Davis 2025-11-24 15:58:25

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

uuidgen(2): add user_ implementation
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
3d101bbff45e53999418496807a51ee5da39d4f6 Brooks Davis 2025-11-24 16:02:36

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

namei(9): fix two ni_startdir leaks
namei() leaks the caller's ni_startdir reference on the empty-path
ENOENT return and on namei_getpath() failure.

On ZFS with the default zfs_xattr_compat=1, an empty user-namespace
extattr name on a file that has an xattr directory leaks one reference
on that directory per call.

Reported by:    llm-postcr
Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61366
5feb271df85fe6bd968052d5bdd02b6d80335610 Konstantin Belousov 2026-11-10 00:49:33

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

vn_open_cred(9): fix ni_startdir leak
vn_open_cred() returns EINVAL before calling namei() for
O_CREAT|O_EXCL|O_DIRECTORY and for O_CREAT|O_EMPTY_PATH.
That leaks an NDINIT_ATVP() start directory.

Reviewed by:    markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61366
7ac5569c5d9e601201c811786e6d0026f8aa3c1b Konstantin Belousov 2026-11-10 01:03:47

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

sched_4bsd.4: sync current scheduler sysctls
Reviewed by:  bcr, jhb, olce
Approved by:    jhb, olce (mentor)
MFC after:      2 weeks
Sponsored by:   FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60002
be25f6d75d26e233ae7501a76d79fe4898c48e40 Minsoo Choo 2026-09-25 15:43:57

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

sched_ule.4: sync current scheduler sysctls
Reviewed by:  bcr, jhb, olce
Approved by:    jhb, olce (mentor)
MFC after:      2 weeks
Sponsored by:   FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60002
7cb4d4dfdd181fb070794ff203b158783c617218 Minsoo Choo 2026-09-25 15:44:26

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

modstat: avoid copying from freed memory
If a module is unloaded after the module is looked up in kern_modstat,
but before one of the copyout's occurs, then the memory being copied
might be freed and reused leading to an information disclosure.

The LLM was particularly concerned about a TOCTOU issue in the length
of the name, but it seems likely that there are issues with all the
copyout's.  As such, hold the shared lock throughout.

Reviewed by:    markj
Reported by:    llm-postcr
MFC after:      3 days
Sponsored by:   Innovate UK
Fixes:          https://cgit.freebsd.org/src/commit/?id=9b3851e9e3b1 ("- Lock down the ``module'' structure...")
Differential Revision:  https://reviews.freebsd.org/D61398
7f8c2056db1e39e44c3eda15aa4e53f7fc971cd8 Brooks Davis 2026-11-11 09:40:40

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

sched_*(2): add user_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
e5100cd50a051dce571444ab4b8a821580f3dda4 Brooks Davis 2026-11-11 09:40:40

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

profil(2): add kern_ implemenation
Effort:               CHERI upstreaming
Sponsored by:   Innovate, UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
1c17a0983ac329f053af69640e8844f4f58b80ac Brooks Davis 2026-11-11 09:40:40

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

sys_capability.c: add kern_ and user_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
974320334844517558365608615dc6f3cc86cdae Brooks Davis 2026-11-11 09:40:41

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

sys_generic.c: add kern_ and user_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
9acec4c863702ea4c3713dbde60dc57542133e5c Brooks Davis 2026-11-11 09:40:41

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

getrandom(2): add kern_getrandom
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
1eada4295600ecb4bc639cd7e9dcd4f743a9298a Brooks Davis 2026-11-11 09:40:41

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

pipe2(2): add kern_pipe2
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
1b2f03fe94ef4a1680a77db825b4471e9181b43b Brooks Davis 2025-11-24 17:53:30

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

pdgetpid(2): add user_pdgetpid
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
22dd3a0df230da613b0ec173605a1275ebce00fb Brooks Davis 2025-11-24 17:55:08

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

uipc_shm.c: add kern_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
0e100820c4bb87dc3c365fa1f6a16e6f84363f5b Brooks Davis 2025-11-24 18:14:57

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

uipc_syscalls.c: add kern_ and user_ implementations
Rename accept1 and sendit to user_accept and user_sendit.

Effort:         CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
65e94d4621c811af607053ffeb7159456bd25f32 Brooks Davis 2025-11-25 22:32:53

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

__acl_*(2): add kern_ implementations
Effort:               CHERI upstreaming
Sponsored by:   Innovate UK
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2284
6e87733f73ff2bc1a5b2d1a370c15e4907deb326 Brooks Davis 2025-11-24 20:28:54

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

pass(4): Wake select/kqueue waiters when an immediate CCB completes
In the CAMIOQUEUE ioctl, a queued CCB completes through passdone(),
which moves it to the done queue and calls selwakeuppri() and
KNOTE_LOCKED() so that a consumer blocked in select(2), poll(2) or
kevent(2) wakes up and collects the CCB with CAMIOGET.  An immediate
CCB (e.g. XPT_DEV_ADVINFO or XPT_DEV_MATCH) is instead executed
synchronously in the ioctl and moved to the done queue directly,
with no notification, so a consumer sleeping while waiting for its
completion never wakes up until some other queued I/O completes.

Send the same notification that passdone() sends.  The peripheral
lock is held at this point and backs the knlist, so KNOTE_LOCKED()
is the correct variant.

A version of this fix has been in production use at Spectra Logic
since 2024.

Co-authored-by: Dave Baukus <daveb@spectralogic.com>
Reviewed by:    imp
MFC after:      1 week
Sponsored by:   Spectra Logic
Assisted-by:    Claude Fable 5 <noreply@anthropic.com>
Differential Revision:  https://reviews.freebsd.org/D61416
6442a92a7d9c20c666999cc699610f1f5bec3cfd Kenneth D. Merry 2026-11-10 23:01:38

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

pass(4): Don't drop the periph lock before selrecord() in passpoll()
passpoll() checked the done queue while holding the peripheral lock,
dropped the lock, and only then called selrecord().  A CCB completing
in the window between the unlock and the selrecord() call sent its
selwakeuppri() before the polling thread was on the selinfo list, so
the wakeup was lost and select(2) or poll(2) slept until another
completion arrived or the timeout expired.

Call selrecord() before dropping the lock.  This lock order is
already established: passdone() calls selwakeuppri(), which takes
the selinfo lock, while holding the peripheral lock.

kqueue is not affected, since the knlist is backed by the peripheral
mutex.

Reported by:    llm-postcr
Fixes:          https://cgit.freebsd.org/src/commit/?id=a9934668aa13
MFC after:      1 week
Sponsored by:   Spectra Logic
Assisted-by:    Claude Fable 5 <noreply@anthropic.com>
88c5709e91ad2cc6df51380673837f0ebd8a2d50 Kenneth D. Merry 2026-11-11 14:26:19

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

user_connectat: correctly pass fd through
In the original adaptation of connect/connectat to use user_connectat in
CheriBSD, I failed to pass the fd through in the connectat case and
always passed AT_FDCWD.  This did trigger failures in the unix_connectat
test which I somehow missed in prior test runs.

Reported by:    llm-postcr
431cc94c0395205f7859d5f65289f9f2ebbe8162 Brooks Davis 2026-11-11 14:41:40

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

p1003_1b: Add capability mode checks
The sched_* syscalls can operate either on the calling process (by
setting pid = 0) or by specifying a pid.  They are allowed in capability
mode, but previously were not scoped to only operating on the calling
process.

Reviewed by:    olce
Sponsored by:   The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D57346
70d08c69f4d0cb3e53347f2dd8dd06007c5d635a Ed Maste 2026-05-29 20:57:49

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

sysvsem: Plug another place where we leak __sem_base to userspace
Leaking this pointer isn't harmful, but other places take care to clear
it, so handle this in SEM_STAT too.

Reviewed by:    imp, kib
MFC after:      1 week
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D61396
73117931984add2f1e9a763de11be847ad872658 Mark Johnston 2026-11-11 14:14:01

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

sysvmsg: Fix sequence number wraparound races
The SysV message queue code has the same problem that we fixed in the
semaphore code in SA-26:54.sysvsem and SA-26:64.sysvsem.  That is,
kern_msgrcv() and kern_msgsnd() are susceptible to TOCTOU races when
they sleep waiting for messages and queue space, respectively.  Unlike
the semaphore code, however, the message queue array is never resized
and there is no notion of message queue sets, so such races do not open
up any memory safety bugs.

Fix the races, following the pattern from the SysV semaphore changes:
use a global sequence number array with wide counters, to avoid changing
the KBI which is embedded in userspace tools.  Fix kern_msgsnd(), which
did not validate the sequence number at all after sleeping.  Use a
msgvalid() helper to factor out some duplicated checks.  Convert a
couple of local flag variables to bools.

Reported by:    Apex Security Research
Reviewed by:    kib
MFC after:      2 weeks
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D61397
57bee493fdfae53453cdcbb63235067d95127621 Mark Johnston 2026-11-11 14:14:14

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

Commit group #7: link_elf
link_elf: bounds-check the dynamic section's tables

parse_dynamic() only checks the DT_HASH header.  nbuckets, nchains and
the other DT_* tables come from the module unchecked.  Check them
against the mapping, and reject a size without its table.

Reported by:    llm-postcr
MFC after:      1 week
Reviewed by:    kib
Differential Revision:  https://reviews.freebsd.org/D61387
e0f08341a68e64111b58eac3cbe21f57c3840178 Osvaldo Janeri Filho 2026-11-11 14:43:02

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


link_elf: validate symbol name offsets

st_name isn't checked against the string table size, for any of the
symbol tables used here.  Do what link_elf_obj.c does since 4e2c2842e.

Reported by:    llm-postcr
MFC after:      1 week
Reviewed by:    kib
Differential Revision:  https://reviews.freebsd.org/D61388
35d9a9b2fa4796a7e7a9c3bf17547e66007e6b14 Osvaldo Janeri Filho 2026-11-11 14:58:04

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


link_elf: validate the section headers in link_elf_load_file()

e_shentsize isn't checked, and e_shstrndx, sh_link and sh_name are used
unchecked.  Do what link_elf_obj.c does.

MFC after:      1 week
Reviewed by:    kib
Differential Revision:  https://reviews.freebsd.org/D61389
e4b9fec671b6f45ab18c6292be7586a7d5d9b85f Osvaldo Janeri Filho 2026-11-11 15:04:28

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

Build system

openssl: fix engine defines to match upstream
Two engine Makefiles define different macros from upstream's
engines/build.info:

- padlock: engines/e_padlock.c builds the engine only when PADLOCK_ASM
  is defined.  Upstream defines it on x86 and x86_64, but our Makefile
  never did, so padlock.so has been a stub whose bind_engine() returns
  0 and the e_padlock-x86*.S code it links was never called.  Define
  PADLOCK_ASM on amd64 and i386, where that asm is built.

- loader_attic: upstream defines OPENSSL_NO_PROVIDER_CODE; the Makefile
  had OPENSSL_NO_PROVIDER_CORE.  No source tests either name, so the
  build does not change; this only follows upstream.

Found by comparing per-file compile flags against an upstream 3.5.9
build.  Checked by preprocessing e_padlock.c for amd64 and i386:
COMPILE_PADLOCKENG is now defined.

Reviewed by:            ngie
MFC after:              1 week
MFC to:                 stable/15
Event:                  FreeBSD Vendor Summit 2026
Differential Revision:  https://reviews.freebsd.org/D61271
56741ec70e548d9360982e3d7c48c0c6946bc16e Gordon Tetlow 2026-11-09 05:35:10

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

pam_krb5: Append to CFLAGS instead of replacing
Obtained from:        CheriBSD
Sponsored by:   AFRL, DARPA
Differential Revision:  https://reviews.freebsd.org/D60723
9e99355a33f2655c5cea704541fa67b0e7b3c8e4 John Baldwin 2026-11-09 18:25:31

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

krb5: Don't include libsys in LIBADD
This has the curious effect of placing libsys before libc in the link
order even though libc links against libsys.  While this happens to
work currently, it is fragile and fails to link properly in some edge
cases.

Sponsored by:   AFRL, DARPA
Differential Revision:  https://reviews.freebsd.org/D60724
f5949447047d8dd0961d162c85d0ef47bd9ca08a John Baldwin 2026-11-09 18:25:42

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

pthread_mutex_clocklock.3: document
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
1c08e2b915bf44dacd5b14ee8d8214ef40946c65 Konstantin Belousov 2026-11-05 18:32:08

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

pthread_rwlock_clock{rd,wr}lock(3): document
Reviewed by:  markj
Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
522407f54078e986bca5a74c8335881c6a1afe81 Konstantin Belousov 2026-11-05 22:40:23

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

scheduler.4: document common scheduler sysctls
Reviewed by:  bcr, jhb, olce
Approved by:    jhb, olce (mentor)
MFC after:      2 weeks
Sponsored by:   FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D60002
fb797f841dab55bcac9c81aada1d211aa2026a37 Minsoo Choo 2026-09-25 15:43:30

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

Internal organizational stuff

.github: Update actions version to 7
version 4 raises warnings when run as the runners force it to use Node
24 instead of Node 20.  version 5 defaults to Node 24, but version 7
is the current version.

Reviewed by:    emaste
Pull Request:   https://github.com/freebsd/freebsd-src/pull/2477
17a42690bbd70c306dd19981953f30c72563ed2f John Baldwin 2026-11-09 18:21:36

debug: classified in 03-filenames_plain1 by '.github/'

tools/git/ghpr: retire
The project under the .../ghpr subdirectory is an earlier version of the
tool. A newer/supported iteration of the tool can be found on
[GitHub][ghpr-repo].

`ghpr` can be installed via `pkg`, e.g., `pkg install py312-ghpr-5`.

Please see the [README.md][readme] for further details.

MFC after:      1 month

[ghpr-repo]: https://github.com/bsdimp/ghpr/
[readme]: https://github.com/bsdimp/ghpr/blob/main/README.md

Reviewed by:    dteske
Differential Revision:  https://reviews.freebsd.org/D61086
d02883b3d8d0943fdb98cbc365074263f918908b Enji Cooper 2026-11-10 02:15:13

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

tools/git/arcgit: retire
This too has been superseded by `git-arc`, located in the same directory as
`arcgit`.

Differential Revision:  https://reviews.freebsd.org/D61379
e7f8896eabd9d0fc9f2768fd9b3336e95f4e26c9 Enji Cooper 2026-11-10 03:06:19

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

Testing

pf tests: make return.py more robust
Sometimes ICMP echo packets get lost, so send more than one during
the sanity check. This should resolve the intermittent failure of the
return.py:TestReturn::test_tcp test.

PR:             https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=300511
Sponsored by:   Rubicon Communications, LLC ("Netgate")
8c9be10c1c3e3b454a57838724efcf2787d3aa62 Kristof Provost 2026-11-09 10:11:28

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

Commit group #8: capsicum-test: make the code WARNS=6 clean
capsicum-test: make the code WARNS=6 clean

Make the code WARNS=6 clean by doing the following:
- Renaming variables (-Wshadow).
- Use memcpy instead of assigning the result of CMSG_DATA to a variable
  (-Wcast-align).
- Wrap some macros with do-while(0) to avoid variable collisions
  (-Wshadow).
- Push one of the TRACE statements up by 1 layer to avoid a collision
  between 2 calls of TRACE via the same overarching macro.

This was needed in order for the code to build properly with D61066,
since the code was not compiling with WARNS set to 3 at the testcase
level.

MFC after: 1 week
Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D61080
04c4b2084eb93fc2374dbb89f343f3941585a640 Enji Cooper 2026-11-10 01:52:55

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


capsicum-test: Disable `HAVE_SEND_RECV_MMSG` again

04c4b2084eb9 accidentally added some changes from another WIP commit into that
diff. Instead of wholesale reverting the change, just revert the part that's
currently broken (`HAVE_SEND_RECV_MMSG`). While some of the related tests pass,
one of the testcases (`capmode.cc:AllowedMmsgSendRecv`) doesn't currently pass.

Revert the change to make the CI run more green again.

MFC after:      1 week
Fixes:  https://cgit.freebsd.org/src/commit/?id=04c4b2084eb9 ("capsicum-test: make the code WARNS=6 clean")
71eddb44d7dfa60e43f77c90b51bd091f0693f85 Enji Cooper 2026-11-10 02:05:33

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


tests/sys/capsicum: Fix -Wshadow issue with `fd_set`

`fd_set` is defined in `sys/select.h`, and prior to this change, was in fcntl.cc as well.

This change renames `fd_set` to `fd_set_` to avoid the name collision.

MFC after:      1 week
Reported by:    gcc 14
Fixes:          https://cgit.freebsd.org/src/commit/?id=04c4b2084eb9 ("capsicum-test: make the code WARNS=6 clean")
a479301abb2c7b384f574fcc641e502f70654835 Enji Cooper 2026-11-10 05:17:26

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

tests/sys/capsicum: restore test coverage with root user
This change builds capsicum_test and installs/runs it as an unprivileged
user ("tests" in vanilla FreeBSD) and root.

This required adjusting logic in the Makefile in order to build two
binaries with the same sources and running them as separate binaries.

Moreover, in order to restore coverage and ensure that some tests which
require `other_uid` (typically specified via `-u` on the CLI with the
test program) don't fail, become the "tests" user when run as root. This
technically doesn't honor unprivileged_user property in kyua.conf: the
property needs to be passed via a command-line parameter to the test
program.

MFC after:      1 week
Reported by:    markj
Fixes:          https://cgit.freebsd.org/src/commit/?id=3fb03fb35b20 ("[tests] switch GoogleTest tests ...")

Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D61066
58e5c5cac1e7c8c99a6e7f8846b655afed05b74f Enji Cooper 2026-11-10 01:55:45

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

Style, typos, and comments

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

asmc: Fix style(9) issues
fix operator and comma spacing and three long lines

MFC After: 1 Week
Approved-by: ngie (co-mentor)

Reviewed by:    ngie, imp
Differential Revision:  https://reviews.freebsd.org/D61302
b391f3f3e007c067a7e4475d91d981f91add0596 Abdelkader Boudih 2026-11-09 18:35:57

debug: classified in 01-style by '[sS]tyle'

tests/sys/pmc/Makefile: whitespace
Use similar spacing on adjacent lines, for readability. No functional
change.
724a4374bd19eda9134b5ac0be2ac4b2207cb1f3 Mitchell Horne 2026-11-10 16:16:49

debug: classified in 01-style by '[wW]hitespace'

man.sh: fix variable typo in debug output
MFC after:    3 days
f6bd24546c27fc4592290c626f837c92181ae23c Wolfram Schneider 2026-11-11 15:46:02

debug: classified in 01-style by '[tT]ypo'

Contrib code

OpenSSH: Update to 10.5p1
This release contains security fixes and small bugfixes.

Full release notes are available at
https://www.openssh.com/txt/release-10.5.

Selected items from the release notes:

Security
========

 * ssh-agent(1): fix an interaction between agent locking and the
   session-bind@openssh.com extension that is used to identify
   forwarded agents. These binding requests were refused when the
   agent was locked, with the result that operations that were
   intended to be limited to local use only could be performed
   remotely, including the ability to add PKCS#11 tokens and make
   use of keys that had destination restrictions applied.
   Reported by sn0x-sharma

 * ssh(1): avoid potential realloc use-after-free in the client if a
   remote forwarding is added via the local session multiplexing
   socket while a remote forwarding open request is pending with the
   server. Report and fix from Brian Mingus of Cognatory

 * sshd(8): make the authorized_keys "restrict" keyword apply
   correctly to tunnel forwarding too (which is administratively
   disabled by default). Reported by Erichen, Institute of Computing
   Technology, Chinese Academy of Sciences
    
New features
------------

 * ssh-keygen(1): add ability to set or clear the touch-required and
   verify-required flags on FIDO private keys when resetting a
   private key's passphrase.

 * ssh(1): tweak ordering of certificates tried during pubkey
    authentication to prefer FIDO keys that do not require user
    presence (touch) first, and FIDO keys that require user
    verification via PIN or biometrics last. This effectively tries
    low-friction authenticators before higher friction ones.

 * ssh(1): add a "ssh -Z user@host" mode that prints the keys that
   will be tried for public key authentication in the order that
   they will be used.
    
 * sshd(8) use setproctitle(3) to identify sshd-session when its
   acting as a post-authentication monitor.
    
Sponsored by:   The FreeBSD Foundation
bd9d7cdd142073d2a83d2748df8781ee552f2336 Ed Maste 2026-11-09 14:54:42

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

mlock_test: use mmap/munmap for unmapped pointer
Instead of hoping that the page after sbrk(0) is unmapped, map a page
with mmap and then munmap it.  This won't work with CheriABI and heap
temporal safety, but it's an easy fix for now and works on all
architectures.

Reviewed by:    ngie
Sponsored by:   DARPA, AFRL
Differential Revision:  https://reviews.freebsd.org/D46954
74ec4ca76b970f80fe7a7c123c1f0ea628e6712c Brooks Davis 2026-11-09 16:02:55

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

libc: skip telldir_leak test
It uses sbrk to attempt to detect memory leaks in telldir, but we're not
going to export sbrk in the future and this is unreliable for mmap-based
mallocs.  It's also a regression test for a specific NetBSD bug.

Reviewed by:    ngie
Sponsored by:   DARPA, AFRL
Differential Revision:  https://reviews.freebsd.org/D46955
4a6091a88701a1f1767e58a255902579c3fbd8eb Brooks Davis 2026-11-09 16:03:07

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

libthr: libpthread/t_mutex.c tests should expect EDEADLK
to follow the POSIX specification.

Sponsored by:   The FreeBSD Foundation
MFC after:      1 week
Differential revision:  https://reviews.freebsd.org/D61253
be90f23d4a6c70cd829366612c53755b47c2986d Konstantin Belousov 2026-11-09 19:17:20

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

Merge commit 72a20b8e2987 from llvm git (by Gabriel Baraldi):
  [SLPVectorizer] Check std::optional coming out of getPointersDiff (#175784)

  Fixes https://github.com/llvm/llvm-project/issues/175768
  There are other unchecked uses std::optional in this pass but I couldn't
  figure out a test that triggers them

This fixes a clang crash in the SLP vectorizer, hit when building
audio/csound on powerpc64le. The hardened libc++ traps on the disengaged
optional, so clang dies with exit code 133. The second hunk is adapted to
llvm 21, where analyzeConstantStrideCandidate() is still isStridedLoad().

Reviewed by:    dim
MFC after:      3 days

Differential Revision:  https://reviews.freebsd.org/D61354
e56090afb68b6c036d6b54c7b66d762d98bd96d0 Piotr Kubaj 2026-11-09 18:58:07

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

OpenSSH: Update to 10.6p1
This release contains security fixes and small bugfixes.

Full release notes are available at
https://www.openssh.com/txt/release-10.6 .

Selected items from the upstream release notes:

Security
========

 * ssh-agent(1): fix an interaction between agent locking and the
   session-bind@openssh.com extension that is used to identify
   forwarded agents. These binding requests were refused when the
   agent was locked, with the result that operations that were
   intended to be limited to local use only could be performed
   remotely, including the ability to add PKCS#11 tokens and make
   use of keys that had destination restrictions applied.
   Reported by sn0x-sharma

 * ssh(1): avoid potential realloc use-after-free in the client if a
   remote forwarding is added via the local session multiplexing
   socket while a remote forwarding open request is pending with the
   server. Report and fix from Brian Mingus of Cognatory

 * sshd(8): make the authorized_keys "restrict" keyword apply
   correctly to tunnel forwarding too (which is administratively
   disabled by default). Reported by Erichen, Institute of Computing
   Technology, Chinese Academy of Sciences

New features
------------

 * ssh-keygen(1): add ability to set or clear the touch-required and
   verify-required flags on FIDO private keys when resetting a
   private key's passphrase.

 * ssh(1): tweak ordering of certificates tried during pubkey
    authentication to prefer FIDO keys that do not require user
    presence (touch) first, and FIDO keys that require user
    verification via PIN or biometrics last. This effectively tries
    low-friction authenticators before higher friction ones.

 * ssh(1): add a "ssh -Z user@host" mode that prints the keys that
   will be tried for public key authentication in the order that
   they will be used.

 * sshd(8) use setproctitle(3) to identify sshd-session when its
   acting as a post-authentication monitor.

Sponsored by:   The FreeBSD Foundation
6dd16be872c631a4c011983107acd213a6fe619d Ed Maste 2026-11-10 14:08:18

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

OpenSSH: Update to 10.6p2
Full release notes are available at
https://www.openssh.org/txt/release-10.6p2 .

Selected items from the upstream release notes:

Future deprecation notice
-------------------------

 * scp(1): begin deprecating the -R flag, which is used to perform a
   remote-to-remote copy by executing scp on a remote host. This
   option is a fragile optimisation that is difficult to use because
   it requires credentials on the remote host. It also creates
   security risks if the shell quoting rules on the remote system
   where the copy is performed differ from the client's expectations.

   From OpenSSH 10.6, this option will continue to work but will
   cause a deprecation warning to be emitted to standard error. In
   a future release, the option will be ignored and will leave in
   place the default remote-to-remote copy behaviour (copy via the
   host running scp).

Reviewed by:    jlduran
Sponsored by:   The FreeBSD Foundation
6fcdc18bdfb17c43eb05eb6289732e6adceb481a Ed Maste 2026-11-10 14:23:50

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

Reverted commits

Commit & revert pair: capsicum-test: make the code WARNS=6 clean
capsicum-test: make the code WARNS=6 clean

Make the code WARNS=6 clean by doing the following:
- Renaming variables (-Wshadow).
- Use memcpy instead of assigning the result of CMSG_DATA to a variable
  (-Wcast-align).
- Wrap some macros with do-while(0) to avoid variable collisions
  (-Wshadow).
- Push one of the TRACE statements up by 1 layer to avoid a collision
  between 2 calls of TRACE via the same overarching macro.

This was needed in order for the code to build properly with D61066,
since the code was not compiling with WARNS set to 3 at the testcase
level.

MFC after: 1 week

Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D61080
5bae837f316ca96b69c61bae15bd61da76e7f3ea Enji Cooper 2026-11-10 01:29:25

debug: classified in 00-reverts by 'This reverts commit \b([0-9a-fA-F]{40})\b'


Revert "capsicum-test: make the code WARNS=6 clean"

The wrong patch got committed somehow from one of my git clones. Revert the
change so I can reapply the correct patch >:(.

This reverts commit 5bae837f316ca96b69c61bae15bd61da76e7f3ea.
ab6a3f137c33d96d15f703bd451589adee067883 Enji Cooper 2026-11-10 01:50:09

debug: classified in 00-reverts by 'This reverts commit \b([0-9a-fA-F]{40})\b'

Commit & revert pair: tests/sys/capsicum: restore test coverage with root user
tests/sys/capsicum: restore test coverage with root user

This change builds capsicum_test and installs/runs it as an unprivileged
user ("tests" in vanilla FreeBSD) and root.

This required adjusting logic in the Makefile in order to build two
binaries with the same sources and running them as separate binaries.

Moreover, in order to restore coverage and ensure that some tests which
require `other_uid` (typically specified via `-u` on the CLI with the
test program) don't fail, become the "tests" user when run as root. This
technically doesn't honor unprivileged_user property in kyua.conf: the
property needs to be passed via a command-line parameter to the test
program.

MFC after:      1 week
Reported by:    markj
Fixes:          https://cgit.freebsd.org/src/commit/?id=3fb03fb35b20 ("[tests] switch GoogleTest tests ...")

Reviewed by:    markj
Differential Revision:  https://reviews.freebsd.org/D61066
dda15b669d021346682009f38acc6db2639fb99f Enji Cooper 2026-11-10 01:32:45

debug: classified in 00-reverts by 'This reverts commit \b([0-9a-fA-F]{40})\b'


Revert "tests/sys/capsicum: restore test coverage with root user"

The wrong patch was applied for D61080. Both changes must go.

This reverts commit dda15b669d021346682009f38acc6db2639fb99f.
83fc6f5bdf8133359ec5526b9e359fd7d35c12c8 Enji Cooper 2026-11-10 01:49:25

debug: classified in 00-reverts by 'This reverts commit \b([0-9a-fA-F]{40})\b'

Commit & revert pair: Remove {ATF,PLAIN}_REQUIRE_KERNEL_MODULE macros
Remove {ATF,PLAIN}_REQUIRE_KERNEL_MODULE macros

These macros predated the `require.kmod` (ATF) and `required_kmods`
(kyua) test metadata and are no longer needed.

Add a hint to freebsd_test_suite/macros.h about the `*FEATURE*` macros
going away soon. See [this kyua issue][kyua-issue] for more details.

MFC after:      1 month
Differential Revision:  https://reviews.freebsd.org/D61082

[kyua-issue]: https://github.com/freebsd/kyua/issues/346
e34b159d4c64575aa45763968b6ad01dfd7c2337 Enji Cooper 2026-11-10 21:31:45

debug: classified in 00-reverts by 'This reverts commit \b([0-9a-fA-F]{40})\b'


Revert "Remove {ATF,PLAIN}_REQUIRE_KERNEL_MODULE macros"

The change breaks the build of tests/sys/net/routing/test_rtsock_l3.c.

This reverts commit e34b159d4c64575aa45763968b6ad01dfd7c2337.
307e725acce22043d5961b0ad392ea0283e1d056 Mark Johnston 2026-11-10 22:12:50

debug: classified in 00-reverts by 'This reverts commit \b([0-9a-fA-F]{40})\b'

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-11-11 17:09:17+00:00.

This work is supported by Tarsnap Backup Inc.

Alternate version: 2026-11-09 (release)