Add NFSv4 multi-client race tests
Add 18 multi-client NFSv4 race tests under
tests/sharing_protocols/nfs/test_nfs_mt_races.py. Each test spawns
N=8 worker threads, each driving its own PynfsClient (distinct
clientid + session), with a barrier-synchronised start so the
server sees concurrent requests. Status distributions are
aggregated and asserted to match RFC 8881 expectations exactly.
Coverage:
- OPEN/CLOSE share-state: DENY_WRITE / DENY_READ mutex; compatible
OPEN(READ) coexistence (RFC 8881 §9.7).
- Byte-range LOCK: shared READ_LT coexistence; disjoint WRITE_LT
coexistence; conflicting WRITE_LT on the same range; readers
blocked by a held WRITE_LT; writers blocked by a held READ_LT
(§9.1). The conflict tests use a sequential holder client +
racer pool; an internal grace-retry helper handles
NFS4ERR_GRACE so the holder's LOCK is reliably acquired across
server-side grace transitions.
[32 lines not shown]
NAS-140995 / 27.0.0-BETA.1 / Add NFSv4 multi-client race tests (#18943)
### Summary
This commit adds multi-client NFSv4 race tests under
`tests/sharing_protocols/nfs/test_nfs_mt_races.py`.
Existing NFS coverage drives the server through a single PynfsClient
session or via the in-kernel Linux NFS client; in both cases requests
are serialized through one client identity, so the server's multi-client
serialization paths get exercised only incidentally. This left the
server's behavior under genuinely concurrent multi-client load
(share-state, byte-range locks, namespace mutations, data writes, and
metadata mutations) largely unverified.
These tests close those gaps by spawning N independent NFSv4 clients
(each with its own clientid and session) per scenario and asserting the
exact server response distribution against the expected serialization
outcome. A regression in any covered path (for example, the lock manager
[11 lines not shown]
[libc] Remove legacy SYS_socketcall fallbacks (#197189)
This patch removes legacy SYS_socketcall fallback paths from all Linux
socket entry points. The individual syscall entry points were
[added](https://github.com/torvalds/linux/commit/9dea5dc921b5f4045a18c63eb92e84dc274d17eb)
in linux 4.3 (on x86, other architectures have had them even sooner).
Our policy is to support the lowest kernel version on
https://kernel.org/, which is 5.10 as of this writing.
This is motivated by the problems in
[testing](https://github.com/llvm/llvm-project/pull/196903#pullrequestreview-4263553670)
the fallback paths -- to make sure this even builds, one needs to get a
hold of very old kernel headers, or otherwise hack its build to force it
to select the fallback path.
New ABIs don't have the accept syscall (only accept4), so I've added an
accept->accept4 fallback.
Assisted by Gemini.
[libc][math] Fix exp10m1f(-0) in SKIP_ACCURATE_PASS mode (#197650)
exp10m1f(-0) should return -0, just like expm1f does. But if you build
with the LIBC_MATH_SKIP_ACCURATE_PASS flag, it accidentally returned +0,
and failed the src.math.smoke.exp10m1f_test test.
The check for -0 is normally done by EXP10M1F_EXCEPTS_LO, a list of
cases that are misrounded by the calculation in the branch for small
input values. In SKIP_ACCURATE_PASS, that list is omitted, trading off
accuracy for code size. But the check for -0 went with them. The fix is
to reinsert that in a `#else` clause, if the list isn't included.
[lldb] Member initialise hardware breakpoint structures (#197127)
These are delcared in NativeRegisterContextDBReg so we should zero-init
them there rather than have everyone memset them later.
ppc64le has its own equivalent that I've made the same change to.
[VPlan] Use llvm.masked.{u,s}{div,rem} for predicated division (#191377)
Fixes #129538
To allow speculatively executing lanes that are predicated off in the
original scalar loop, we currently widen divisions by using a "safe
divisor" when we can't prove it's safe otherwise.
We previously tried to optimize these to VP intrinsics which can be
speculated with a mask in #154076, but this was fragile as it relied on
assuming that the safe-divisor lanes wouldn't be read.
#189705 and #191240 added new intrinsics to explicitly represent
semantics where the masked off lanes are poison. This PR teaches the
loop vectorizer to use them.
We can then safely convert these to VP intrinsics in optimizeMasksToEVL
for RISC-V. And on AArch64 we see better codegen after
https://github.com/llvm/llvm-project/pull/191164.
[lldb] Fix TestBuiltinDebugTrap.py on ARM platform (#197502)
The workaround for x86_64 which changed the handling of SIGILL signals
is also required on 32-bit ARM platforms, because __builtin_trap(),
which compiles to a UDF instruction, also generates SIGILL. If we don't
change the handling here, the inferior is killed and the stop reason is
"none".
The failure is here:
https://lab.llvm.org/buildbot/#/builders/18/builds/25948
[libc] Implement getsockname and getpeername (#197196)
This patch implements getsockname and getpeername functions for Linux,
and adds unit tests to verify them under connected, unbound, and invalid
socket states.
The implementations do not have the socketcall fallbacks, as those are
being removed in #197189.
In log_evpnaddr() the labellen for EVPN_ROUTE_TYPE_2 can either be 3 or 6.
Currently only the first label is printed so only take the first 3 bytes
of addr->labelstack to build the VNI. Do this by hand with a few shifts
and or opertations instead of the memcpy and htonl() fumbling.
EVPN is still experimental and disabled by default.
Found by myself and also reported by Frank Denis
OK denis@ tb@
[NFC][Analysis] Use `isa<ConstantPointerNull>` for null pointer checks
Make Analysis null pointer checks use `ConstantPointerNull` rather than generic
null value checks.
openimageio: updated to 3.1.13.1
Release 3.1.13.1 and 3.1.13.0 (May 3, 2026) -- compared to 3.1.12.0
IBA: Add FLIP perceptual image difference metric as an experimental feature, including ImageBufAlgo::experimental::FLIP_diff() C++ API, Python ImageBufAlgo.FLIP_diff(), and oiiotool --flipdiff command (requires --experimental flag). Also introduces oiiotool --experimental flag to enable features not yet part of the stable API.
fmath.h: degrees() and radians() are now constexpr.
ImageSpec: get_string_attribute() now correctly converts non-string attributes to string
bmp: Correctly handle the combination of greyscale + RLE compression
dds: Corruption protection: validate resolution and guard against integer overflow
dpx: Several safety fixes for corrupt DPX files: integer overflow protection in buffer size calculations, span-based pointer safety, and use of check_open() for resolution/channel validation
heif: Fix incorrect tracking of current subimage
iinfo: Better error handling and propagation, especially from --hash; fix return code when a file could not be read
jpeg: Be more flexible with corrupt IPTC blocks; use "imageinput:strict" to control whether a bad block is skipped silently or fails the whole file
jpeg2000: Guard against integer overflow in buffer size computation
rla: Harden against corrupted files: guard against RLE buffer overruns and improve seek robustness
sgi: Better detection of corrupt RLE info that could overflow
softimage: Multiple hardening fixes against corrupted input: prevent RLE buffer overruns
targa: Protection against corrupt, mis-sized palette; fix misunderstanding of non-zero palette start index
tiff: Care with missing rowsperstrip
[8 lines not shown]
[libc] Implement the linux-specific memfd_create syscall wrapper (#197439)
I'm using the MFD constants from the kernel header as that's what was
done for mmap, though it would be relatively simple to declare these
ourselves, as they are not architecture-dependent.
opencolorio: updated to 2.5.2
2.5.2
This is a bug-fix and security release that addresses CVE-2026-42450 and the other issues described below. It is ABI compatible with 2.5.1.
CVE-2026-42450 affects all prior OCIO 1.x and 2.x versions.
[FIRToMemRef] Fix fir.convert insertion inside omp.wsloop
When replaceFIRMemrefs inserted a fir.convert before an op inside a
LoopWrapperInterface region (e.g. omp.simd inside omp.wsloop), it
violated the single-nested-op invariant, producing a verifier error.
Fix by walking up the LoopWrapperInterface parent chain and inserting
before the outermost wrapper instead.
Co-authored-by: Claude Sonnet 4.6 <noreply at anthropic.com>
[libc] Remove sysconf from Scudo integration test entrypoints (#197639)
sysconf moved behind LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS in commit
8146920541c4. When that flag is OFF (the default), the target is not
built as an OBJECT library, so referencing it via add_entrypoint_library
causes a CMake generation error on the libc-x86_64-debian-fullbuild bot.
Scudo does not use sysconf, so this is a safe removal.
Assisted-by: Automated tooling, human reviewed.
Sync cert.pem with mozilla roots; quite a few CA certificates were
either removed or distrusted for web so are removed here. ok tb@
Common policies (moz, google, ca/b) are now to distrust roots with key
material created before a certain time (currently 2008, this rolls
forwards by 2 years each April until 2029 when it moves to '15 years
from creation'), and also roots used for TLS are not permitted to be
shared with other purposes (Secure Email, Code Signing, or others).
This removes all root certificates from the following CA operators:
-AffirmTrust
- /C=US/O=AffirmTrust/CN=AffirmTrust Commercial
- /C=US/O=AffirmTrust/CN=AffirmTrust Networking
- /C=US/O=AffirmTrust/CN=AffirmTrust Premium
- /C=US/O=AffirmTrust/CN=AffirmTrust Premium ECC
-Firmaprofesional SA
- /C=ES/O=Firmaprofesional SA/2.5.4.97=VATES-A62634068/CN=FIRMAPROFESIONAL CA ROOT-A WEB
[67 lines not shown]
[AArch64][clang] Improve -mcpu= and -mtune= error messages too (#197640)
Similar to my previous change improving the error message for
`-march=` in #197441, this changes `-mcpu=` and `-mtune=` arguments
to only report the first invalid feature flag, rather than the
entire string.
This is a much clearer error message for the user.