[CIR] Handle goto jumping out of a cleanup scope (#197574)
This adds the FlattenCFG handling for a goto operation whose target is
outside of the cleanup scope in which the goto appears. Most of the
handling for this was already in place. We just needed to create a new
goto in the cleanup continuation block associated with the goto
branching through the cleanup (we were putting an unreachable there
before). The main thing that was needed was testing.
Assisted-by: Cursor / claude-opus-4.7-thinking-xhigh
[llvm][ADT] Fix overload resolution in `to_vector` / `to_vector_of` for `bool` containers (#197461)
`to_vector` and `to_vector_of` used to return a braced initializer list:
`return {adl_begin(Range), adl_end(Range)};`
For non-`bool` element types this resolved to the iterator-pair
constructor `SmallVector<T>(ItTy First, ItTy Last)` as intended.
However, for `bool` element types, overload resolution preferred the
`SmallVector<bool>(std::initializer_list<bool>)` constructor, because
every pointer type has an implicit conversion to `bool` (the same one
that makes `if (ptr)` work).
In the worst case, code such as `llvm::to_vector(array_ref_of_bool)`
miscompiled. When compiling with warnings, such code would error out:
```
In file included from llvm-project/llvm/include/llvm/ADT/ArrayRef.h:14:
llvm-project/llvm/include/llvm/ADT/SmallVector.h:1330:11: error: type 'decltype(adl_detail::begin_impl(std::forward<llvm::ArrayRef<bool> &>(range)))' (aka 'const bool *') cannot be narrowed to 'bool' in initializer list [-Wc++11-narrowing]
1330 | return {adl_begin(Range), adl_end(Range)};
| ^~~~~~~~~~~~~~~~
[12 lines not shown]
linux: suppress reclaim lockdep in zfs_inactive via rwlock wrappers
kswapd can enter zfs_inactive() from inode reclaim while holding
fs_reclaim. The z_teardown_inactive_lock still serializes teardown,
but the reclaim-thread acquire/release pair can produce a lockdep
cycle through zfs_zinactive() and zfs_rmnode().
Add Linux rwlock nolockdep wrappers alongside the existing rwlock
macros and use them only for the reclaim-thread
z_teardown_inactive_lock acquire/release in zfs_inactive(). Keep
the real rwsem semantics unchanged and leave CONFIG_LOCKDEP
handling in the platform rwlock layer.
Reviewed-by: Brian Behlendorf <behlendorf1 at llnl.gov>
Signed-off-by: ZhengYuan Huang <gality369 at gmail.com>
Closes #18505
iSCSI ALUA: regression test for failover LUN-replace stall
Add an extended test that builds 2 targets (25 + 10 LUNs), opens an
iSCSI session to the standby on the 25-LUN target so the kernel has
tgt_devs to clean up during become_active, then triggers an ungraceful
failover via poweroff_vm. Asserts:
- /var/log/failover.log on the new master does not contain
'Failed to restart service "iscsitarget" after 15 seconds',
which would indicate the LUN-replace loop stalled.
- /sys/kernel/scst_tgt/async_lun_replace reads 0 after failover,
confirming reset_active released the parked cleanup work.
- All LUNs are reachable on the new master.
A function-scoped fixture handles recovery (start_vm, wait_for_backup,
wait_for_settle) so the cluster is restored to a clean two-node state
even if an assertion above failed.
Uses the dataset() asset helper rather than zvol() for lower
per-extent overhead at this scale.
Release parked async LUN-replace cleanup after DLM peer eviction
scst.async_lun_replace=1 now also tells the kernel to park the deferred
cleanup of old tgt_devs from each LUN replace until the flag is cleared.
This avoids stalling become_active on scst_dlm_lock_wait inside
scst_clear_reservation while the dead peer is still a DLM lockspace
member.
Add iscsi.scst.disable_async_lun_replace and call it from the end of
iscsi.alua.reset_active, after dlm.reset_active (which evicts the peer)
completes.
[clang][NFC] Mark CWG717 as implemented and add a test (#197732)
[CWG717](https://wg21.link/cwg717) allows applying `thread_local` to
`extern` block-scope variables and static data members. Clang implements
this since 3.3: https://godbolt.org/z/sx4nc3qqe
[PowerPC] Match intrinsics ppc_amo_st[dw]at with a pattern (#197708)
The intrinsics are 1:1 to the instructions except for the order of the
operands, thus it is easy to match them with a pattern.
However, the intrinsics are defined as reading from and writing to
memory, but the instructions explicitly set mayLoad to false. Looking at
the ISA description it seems to me that the latter is not true. In any
case, the side effect flags must be the same, otherwise the pattern is
rejected.
Prevent TNC certificate reuse in apps and DS
This commit fixes an issue where TNC certificates could be selected
by apps and directory services because their validation paths did
not run cert_services_validation. TNC certs also appeared in cert
choice dropdowns across apps, directory services, system general UI
and system advanced syslog.
Filter TNC certs out of all cert choices methods and add the missing
validation hooks so that new users cannot attach a TNC cert to any
non-TNC consumer. For directory services LDAP_MTLS the validation
is a narrow TNC-prefix check to preserve compatibility with legacy
client certs.
devel/at-spi2-core: Update to 2.60.3
Changelog:
What's new in at-spi2-core 2.60.3:
* libatspi: Fix another NULL pointer dereference.
What's new in at-spi2-core 2.60.2:
* atspi-device-legacy: add null checks for when x11 isnt available.
* python: Fix __getitem__ with a negative offset.
* Fix a NULL pointer dereference when sending an event.
* device-x11: Fall back on raw key events if there is no focus.
What's new in at-spi2-core 2.60.1:
[42 lines not shown]
[clang] NFC: add new test cases involving bugs in getTemplateInstantiationArgs
The new test files come from 2bb3d3a3f32ffaef3d9b6a27db7f1941f0cb1136, which was
reverted a long time ago. These have a couple I had to #ifdef out because they
expose crashes.
The other test cases are preparatory for a future PR.