[AtomicExpand] Support non-integer atomic loads. (#199310)
This is arguably an enhancement rather than a bugfix. But
AtomicExpandPass already tries to support some non-integer atomic ops
using cmpxchg by bitcasting to/from an integer type. We're just missing
this one path used by atomic load. Seems easy enough to support it.
This bug was found by a large run of Opus 4.7 looking for bugs in LLVM.
eventhandler: Fix a race when pruning eventhandlers
By default, eventhandler_deregister() blocks until it reaches some point
where no threads are invoking the event. At this point, it knows that
1) no threads are currently executing the handler,
2) some thread has freed the eventhandler structure by virtue of having
called eventhandler_prune_list(),
so it is safe to return.
Suppose a thread is trying to deregister an event handler. A different
thread prunes it, and wakes up the first thread. Before the first
thread runs, a third thread grabs the event handler lock, and starts
executing handlers. The first thread observes el_runcount > 0, and goes
back to sleep. The third thread sees no event handlers to prune, and
doesn't wake up the first thread, which sleeps forever.
This change fixes the race and tries to make eventhandler_invoke() more
efficient: keep a count of the number of dead list entries and only
prune the list if there is at least one dead entry. Also, in
[9 lines not shown]
if_vlan: Use the exclusive lock everywhere
Running sys/net tests in parallel reveals some panics which look like
the one below:
```
shared lock of (sx) vlan_sx @ /home/markj/sb/main/src/sys/net/if_vlan.c:2395
while exclusively locked from /home/markj/sb/main/src/sys/net/if_vlan.c:1850
panic: excl->share
cpuid = 9
time = 1776467219
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe00d84e0780
vpanic() at vpanic+0x136/frame 0xfffffe00d84e08b0
panic() at panic+0x43/frame 0xfffffe00d84e0910
witness_checkorder() at witness_checkorder+0xdb1/frame 0xfffffe00d84e0ad0
_sx_slock_int() at _sx_slock_int+0x64/frame 0xfffffe00d84e0b10
vlan_ioctl() at vlan_ioctl+0x25c/frame 0xfffffe00d84e0b70
if_setflag() at if_setflag+0xdc/frame 0xfffffe00d84e0be0
[29 lines not shown]
Reland "[LifetimeSafety] Detect iterator invalidation through container aliases" (#197873)
This relands #195231, which was reverted in commit
7c9717848851f3a71908becab4312ddc2d8482b8.
The original crash from the reproducer no longer reproduces after
#196680, #197220, and #197604. I verified the original `repro.cpp`: it
no longer hits the lifetime-safety assertion now.
Also added regression tests for the crash:
```cpp
struct SinkInteriorBorrow {
const char *dest_; // expected-note {{this field dangles}}
SinkInteriorBorrow(std::string *dest, int n) : dest_(dest->data()) { // expected-warning {{parameter which escapes to a field is later invalidated}}
if (n > 0)
dest->clear(); // expected-note {{invalidated here}}
}
[3 lines not shown]
[AMDGPU] Fix v_dot4_i32_i8 alias to set neg_lo modifiers (#197998)
Fixes issue here https://github.com/ROCm/ROCm/issues/6126
The `v_dot4_i32_i8` assembly alias was not setting the `neg_lo` modifier
bits when converted to `v_dot4_i32_iu8`, which causes signed int8
operands to be treated as unsigned.
For example: `q=[1,-1,1,-1], k=[1,1,1,1]`: expected 0, returned 512. The
instruction is computing `1*1 + 255*1 + 1*1 + 255*1 = 512` ; treating
`-1 (0xFF)` as `255`.
On AMD GFX11+, the native `v_dot4_i32_i8` instruction doesn't exist. The
hardware provides `v_dot4_i32_iu8` with `neg_lo` modifier bits to
control signedness of each operand. The compiler correctly lowers
`v_dot4_i32_i8` intrinsics by setting `neg_lo:[1,1,0]`, but inline
assembly using the `v_dot4_i32_i8` mnemonic bypasses this lowering and
goes directly to the assembler.
[10 lines not shown]
net/powerdns: Update to version 5.0.5
From Marcin Gondek via wip.
This is release 5.0.5 of the Authoritative Server. It contains bug fixes and security fixes.
Bug Fixes
Fix PowerDNS Security Advisory 2026-06 for PowerDNS Authoritative Server: Multiple Issues
use less inefficient code in web server
harden xfr*BitInt writers
perform axfr immediately when creating an autosecondary domain
Actually install binaries when building with meson
web: stricter control of statistics rings changes
stricter handing of the Lua DNS update policy
correctly delete ENT records from the API
lua: one more bad case of createForward
minor pdns_control bugfixes
webserver: correctly split the basic authorization cookie
[2 lines not shown]
net/dnsdist: Update to version 2.0.6
From Marcin Gondek via wip.
Improvements
Fix clang-tidy warnings
Also apply UDP socket buffer sizes to backend sockets
Make code boost-1.91 compatible
Bug Fixes
Check the DoQ query size against the received size
Fix outgoing TLS session cache cleanup
Compute a less inaccurate number of DNS records to pass to reserve()
Maintain a "current size of received body" counter.
Fix the dynamic block top suffixes counters computation
snmp-agent: Fix a memory leak
Fix XSK configuration via YAML
[12 lines not shown]