[Cloning] Move undeclared scopes into cloned disjoint domains
When a scope from a disjoint-scope domain is cloned (because its
llvm.experimental.noalias.scope.decl is in the code being duplicated),
the clone is placed into a clone of the domain. Scopes of that domain
without a declaration in the duplicated code, however, were left in the
original domain. InstCombine removes declarations of scopes it considers
unused, so this happens in practice: an !alias.scope list {b, c} where
only c is still declared became {b, c'} when copying for loop unrolling, with c' in
the new domain. ScopedNoAliasAA then only compared {c'} against a
!noalias {c'} list in that domain and concluded NoAlias, while the
original {b, c} list was not noalias with {c}.
Fix this by also cloning, into the cloned domain, any scope of that
domain used by the adapted instructions. Renaming a whole disjoint
domain consistently within the duplicated code preserves the relations
inside it. I don't expect the theoretical precision loss here to be an
issue in practice.
[7 lines not shown]
[NFC][Transforms] Add tests with undeclared scopes in cloned disjoint domains
Pre-commit tests for fixing #241246. When scopes from a disjoint-scope domain
are cloned into a clone of that domain, scopes of the same domain that
have no llvm.experimental.noalias.scope.decl in the cloned region
currently stay in the original domain. An !alias.scope list that uses
both kinds of scope is then split across the two domains, which leads
ScopedNoAliasAA to report a false NoAlias.
AI disclosure: Claude wrote these (and `llvm-reduce`d them), and
mostly wrote this commit message (I tinkered with it a bit)
Co-Authored-By: Claude Opus 5.5 <noreply at anthropic.com>
vmm: Don't assert on device errors in MOVS emulation
emulate_movs() asserts that it fails only with EFAULT, but a device read
or write can fail with other errors, such as EINVAL from lapic_mmio_read()
for an access whose 4-byte-aligned offset is not 16-byte aligned, or from
lapic_mmio_write() for an unaligned or non-4-byte access. A guest could
therefore panic a kernel with INVARIANTS using a MOVS from the local APIC.
Return the error, as the other emulation functions do.
Reviewed by: markj
MFC after: 1 week
Sponsored by: Alchemilla Ventures Private Limited
tests/sys/kern/ssl_sendfile: :eagain_vs_eof: improve failure messaging
Convert many raw `ATF_REQUIRE(..)` macro calls to `ATF_REQUIRE_MSG(..)`
and output the sbytes attached to the context in provide meaningful
information with failure messages.
While here, fix a typo in a comment and some indentation in another
testcase (:random).
PR: 299447
MFC after: 1 week
tests/sys/kern/ssl_sendfile: :eagain_vs_eof: improve failure messaging
Convert many raw `ATF_REQUIRE(..)` macro calls to `ATF_REQUIRE_MSG(..)`
and output the sbytes attached to the context in provide meaningful
information with failure messages.
While here, fix a typo in a comment and some indentation in another
testcase (:random).
PR: 299447
MFC after: 1 week
ssh: use defaultkey sentinel for ML-DSA-44 default host key
servconf_add_hostkey() compares its file argument to defaultkey by
pointer to skip an unreadable default key; the ML-DSA-44 entry passed
the "[default]" literal, so the skip (and the "No host key files found"
fallback) never applied to it.
Approved by: re (cperciva)
MFC after: 1 week
Reviewed by: emaste
Fixes: bb5c77e9d281 ("OpenSSH: Update to 10.4p1")
Differential Revision: https://reviews.freebsd.org/D60922
(cherry picked from commit 2d6f961164e4ab7e823972336dc9cfaae6a88ed8)
(cherry picked from commit 55ede03fc24aa8de58814563e82e72cf8b34d9cc)
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
[10 lines not shown]
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 at 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.
[37 lines not shown]
AMDGPU: Use inline register class syntax in MIR tests (#242042)
Move away from keeping a registers section just to state the register
class. Delete the registers section when the class was the only used
field.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
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 at 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.
[37 lines not shown]
CodeGen: Use RuntimeLibcallsInfo for memset_pattern16 (#241384)
CodeGen passes shouldn't be using TargetLibraryInfo for functions they will
emit. Use RuntimeLibcallsInfo which knows how to insert the correctly typed
and annotated declaration. This is a slight behavior change since
RuntimeLibcallsInfo respects the triple's libcall availability, but doesn't respect
TargetLibraryInfo "no-builtins" attributes. This is consistent with how regular
memset is treated.
Co-authored-by: Claude Opus 5.5 <noreply at anthropic.com>
ZTS: zvol_stress: no fio verify_async on FreeBSD
On FreeBSD 16.0-CURRENT since main-n290812 (CI image 20261109),
zvol_stress fails every run: each fio dies with "got signal=11",
"err= 4" and "file hash not empty on exit" once its verify pass is
done. It isn't ZFS: the same fio command line crashes on a plain
file on UFS.
fio starts its verify_async threads with a 2 * PTHREAD_STACK_MIN
stack, which is 4 KiB on FreeBSD amd64. freebsd-src 2734bbbcba3c
("libthr: Create landing pad in thr_once in C++ exception") made
libthr.so link libgcc_s, so the first pthread_exit() in a process
now finds _Unwind_ForcedUnwind and dlopen()s libgcc_s in
thread_uw_init(). On a verify thread that overflows the one-page
stack into its guard page:
#0 object_match_name (name="/lib/libgcc_s.so.1") rtld.c:6056
#1 load_object rtld.c:2928
#2 dlopen_object rtld.c:4044
[15 lines not shown]
TCP RACK: fix RSM computation for TCP fast open
When spitting an RSM containing the SYN and data, honor the
sequence number used by the SYN flag when computing the offset
in the socket buffer.
Approved by: re (cperciva)
PR: 297006
Reviewed by: rrs, Peter Lei
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D61149
(cherry picked from commit ff066579fd7719a6361e7ce8cc9ade47517d242d)
(cherry picked from commit d40890ffbd8bcacfc4e24c37daad931db8f31804)
vmm: Skip TMR rebuilds for edge-to-edge IOAPIC writes
IOAPIC redirection-table writes rendezvous all active vCPUs to
rebuild their vlapic trigger-mode registers when fields other than
mask or polarity change. Retargeting an edge-triggered pin incurs
this cost even though it does not contribute to the TMR.
vioapic_update_tmr() rebuilds the TMR from level-triggered entries
only. Skip the rendezvous when the modified entry is edge-triggered
both before and after the write. Check the old and new trigger modes
so that edge-to-level and level-to-edge transitions still rebuild
the TMR. Retain the existing all-vCPU rebuild path, mask/polarity
exclusions and remote-IRR handling.
Approved by: re (cperciva)
Approved by: markj, cperciva
Differential Revision: https://reviews.freebsd.org/D60721
MFC to: releng/15.2
Reported by: Wanpeng Qian <wanpengqian at gmail.com>
[4 lines not shown]
vmm: Add a bulk TMR reset hook for Intel APICv
vioapic_update_tmr() resets all 256 vectors before rebuilding the
level-triggered vector set. With Intel virtual interrupt delivery,
each per-vector reset loads the VMCS, reads and writes an EOI-exit
bitmap, and clears the VMCS.
Add an optional bulk-reset hook so VMX can clear the four EOI-exit
bitmaps with one VMCS load/clear pair. Clear the software TMR banks
directly when using the hook, and retain the per-vector fallback
for backends without it.
Approved by: re (cperciva)
Approved by: markj, cperciva
Differential Revision: https://reviews.freebsd.org/D60692
MFC to: releng/15.2
Reviewed by: markj
(cherry picked from commit ee9205f068c7675cf4d23e51cc98238d95ba1950)
(cherry picked from commit 88d7efb9e4fa03c8d364f9aeb88b10075e1bf69c)
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,
[10 lines not shown]
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.
Approved by: re (cperciva)
Reviewed by: bapt
MFC after: 1 day
Differential Revision: https://reviews.freebsd.org/D61380
(cherry picked from commit a7163bd76986282fdcb059b91301d3214da49642)
(cherry picked from commit f3555a0e240ae2b26fdf0db2e3f68ec6846bbb58)
i2ctinyusb: do not list i2ctinyusb.c twice in SRCS
The module Makefile named its only source file in both the SRCS= line
and the SRCS+= line that follows. bsd.kmod.mk tolerates the duplicate
in a normal build, but when the kernel is built with -flto=thin the
linker sees the same bitcode object twice and refuses to link the
module ("Expected at most one ThinLTO module per bitcode file").
Approved by: re (cperciva)
Fixes: 54e231b373ef
(cherry picked from commit b5cd411af6418986fa0da9c12d02b9f26c344a4a)
(cherry picked from commit cfd1aabac12fc239d1c9b8433b29c68a25a7e5b6)
mqueuefs: set *a_eofflag in VOP_READDIR
mqfs_readdir() never reported end of directory. Since 77b273d8f5f4
VOP_READDIR_APV() asserts that a readdir which returns no entries also
sets *a_eofflag, so with INVARIANTS the final zero-length
getdirentries(2) that ls(1) issues on a mounted mqueuefs panics:
panic: VOP_READDIR: eofflag not set
Report end of directory when the child list was walked to its end;
leave the flag clear when the walk stopped because the buffer was full.
Approved by: re (cperciva)
(cherry picked from commit fbac0abdc5ab1fe867ac85635662ef06b2ee9d10)
(cherry picked from commit 6df22096ddb27edb169cfb6758d1dab130f9f683)