Restrict on-disk perms of internal container/apps dataset roots
The internal dataset trees that back containers
(/mnt/.truenas_containers/), Docker apps (/mnt/.ix-apps/), and the
per-container idmapped bind-mount parent (/run/truenas_containers/root/)
are implementation-detail paths that aren't intended to be inspected
directly by host users. They currently mount with the default of
drwxr-xr-x root:root (or 0755 from os.makedirs for the /run parent),
which is looser than necessary.
This PR pins those three directories to 0700 root:root and re-applies
the mode at the relevant entry points so the property is idempotent
across reboots and manual chmod drift.
[lldb] Fix data race on ThreadPlan::GetNextID's plan-ID counter (#197811)
`g_nextPlanID` is a function-local static used to hand out unique
ThreadPlan IDs. It was a plain uint32_t, so concurrent ThreadPlan
constructors (e.g. each Process's private state thread queueing its base
plan) raced on the increment.
Make it std::atomic<uint32_t>. Prefix operator++ on std::atomic is
already an atomic fetch_add that returns the new value, so the call
sites are unchanged.
Found by ThreadSanitizer as part of #197792.
[lldb] Fix data race on ValueObject's unique-id counter (#197809)
g_value_obj_uid is a file-scope static that hands out unique IDs to
every ValueObject. It was a plain user_id_t, so concurrent
SBTarget::FindGlobalVariables / EvaluateExpression calls raced on the
increment.
Make it std::atomic<user_id_t>. Prefix operator++ on std::atomic is
already an atomic fetch_add that returns the new value, so the call
sites are unchanged.
Found by ThreadSanitizer as part of #197792.
[clang][NFC] Remove `macro_begin` and `macro_end` from `Preprocessor`
Use `macros()` wherever posible. This gives us the following advantages:
1. We can use the range-base for loop for simpler looking code.
2. We more ergonomically use algorithms.
3. We can avoid the duplicate work of checking if we need to call `ExternalSource->ReadDefinedMacros()` that was in both `macro_begin` and `macro_end`. In some cases, we save this extra work once per loop iteration, not just one extra total.
4. No user confusion deciding which version they should call
5. Reduce the size of `Preprocessor.h` and the number of members in `Preprocessor`.
Using `macros` ends up being the better solution in every case, so since all callers were migrated from `macro_begin` and `macro_end` to `macros`, get rid of `macro_begin` and `macro_end`.
[lldb] Fix data race on Process::FindPlugin's unique-id counter (#197807)
g_process_unique_id is a function-local static used to hand out unique
IDs to each Process. It was a plain uint32_t, so concurrent
SBTarget::LoadCore / Target::CreateProcess calls raced on the increment.
Make it std::atomic<uint32_t>. Prefix operator++ on std::atomic is
already an atomic fetch_add that returns the new value, so the call
sites are unchanged.
Found by ThreadSanitizer as part of #197792.
[VPlan] Add helper to iterate over all loop blocks in plain VPlan (NFC). (#197499)
Add a new helper to return all blocks in an initial plain CFG VPlan,
containing all blocks reachable from the header in RPOT up to the middle
block, skipping any VPIRBasicBlocks (existing exit blocks).
PR: https://github.com/llvm/llvm-project/pull/197499
[NFC][SSAF] Rename PointerFlowReachableAnalysis to UnsafeBufferReachableAnalysis (#195204)
The previous-named PointerFlowReachableAnalysis is essentially
propagating unsafe buffers on a pointer flow graph. The pointer flow
analysis is a dependency, instead of the subject. So do the rename
and move.
[SSAUpdater][NFC] Limit search for matching phi-node (#195744)
Limit search for a matching phi-node in `FindExistingPhi` to avoid
O(N^2) behavior when a large number of phi-nodes needs to be searched.
This limit is motivated by reduce.cu in hipcub/warp where N was 26000+.
This large number of phi-nodes is currently avoided by
https://github.com/llvm/llvm-project/pull/190269. In a 3-stage build of
LLVM the max search was 53.
This PR was tested with a 3-stage build of LLVM and ~10000 csmith
testcases with a search limit set to 0 (in this PR the search limit is
set to 80). Thus, missing a matching phi-node does not seem to cause
problems.
Since the search limit is rarely hit, this PR should almost always be a
NFC.
This PR was made with Claude assistance.
[2 lines not shown]
Cloud releases: Switch to firstboot_pkg_upgrade
Cloud images are deployed with base system packages. Introduce a
firstboot package auto updater to patch the base system on first boot.
MFC after: 1 hour
MFC to: stable/15
Reviewed by: cperciva
Sponsored by: Google Cloud
Differential Revision: https://reviews.freebsd.org/D56890
[SelectionDAG] Add ISD::ABS_MIN_POISON to preserve poision semantics of llvm.abs (#183851)
SelectionDAGBuilder previously dropped the is_int_min_poison flag on
llvm.abs, lowering both variants to ISD::ABS. This is unsound for
certain targets like NVPTX whose native abs.s is poison on INT_MIN. This
PR adds a new ISD::ABS_MIN_POISON opcode, emits it for llvm.abs(x, true)
and threads through legalization, SDAG folding. The default action for
this is Expand with a fallback to the original ISD::ABS. DAGCombiner
adds visitABS_MIN_POISON which mirrors visitABS and two new folds:
abs_min_poison(freeze(abs x)) -> freeze(abs x) and
abs_min_poison(sign_extend_inreg x) → zext(abs(trunc x)). PromoteIntRes,
ExpandIntRes, and widenAbs now emit ABS_MIN_POISON whenever the input
provably can't be the wide INT_MIN. NVPTX fix to match abs.s against
abs_min_poison and tests updated accordingly.
sysutils/broot: update to 1.56.4
v1.56.4 - 2026-05-14
fix compilation on non unix platforms (1.56.3 isn't available on those systems)
v1.56.3 - 2026-05-13
fix control characters sometimes remaining in the terminal after broot exit
nushell: rename br module to avoid conflict in last nushell version - Fix #1138 - Thanks @paulhey
:open_stay on the staging area opens every staged file through the system opener - Fix #444 - Thanks @ChrisJr404
news/eilmeldung: update to 1.5.2
1.5.2 - 2026-05-14
restored default border theme (connected and rounded)
fixed bug which resulted in rapid swapping of article content
1.5.1 - 2026-05-13
open borders for everyone!
you can now freely customize the border style of the panels!
want to highlight the focused panel by a double border and use a plain border for inactive panels? just append this to your config.toml:
[border_theme]
focused = "double"
unfocused = "plain"
framing = "connected"
these settings also feature to new "connected" style which elegantly connected the borders of each panel; you can still go back to the classic style by using framing = "open" or even use completely closed border with framing = "closed"
[4 lines not shown]
[mlir][vector] Add fold to transfer_{read,write} vector<1xT> (#196598)
vector.transfer_read and vector.transfer_write's permutations maps are
irrelevant with vector<1xT>. This pattern unblocks lowerings to
vector.load and vector.store.
Assisted-By: Claude Opus 4.6
[clang-sycl-linker] Add per-translation-unit device code split mode (#197571)
Adds `source` split mode to `clang-sycl-linker`, driven by the
`sycl-module-id` function attribute emitted by the CFE.
`source` is the default mode and groups kernels by the value of their
`sycl-module-id` attribute, emitting one device image per translation
unit.
If the linked module contains no entry points, no splitting happens.
The `EntryPointCategorizer` in `ClangSYCLLinker.cpp` is refactored into
a class (instead of a stateful lambda) to support both per-kernel and
per-TU modes cleanly.
Also fix a potential buffer invalidation bug in sycl::writeSymbolTable
where appending symbol names could reallocate the output buffer while
pointers into it were still live.
Co-Authored-By: Claude
[2 lines not shown]
[Clang][CUDA] Introduce support for 'f' GPU variants and feature test macros (#197584)
- Clang now accepts 'f' GPU variants as the target for sm_100+ GPUs.
- `__CUDA_ARCH_SPECIFIC__` and `__CUDA_ARCH_FAMILY_SPECIFIC__` are now
defined to allow distinguishing `a`/`f`/base GPU vaiants.
- refactored BuiltinsNVPTX.td to handle availability quirks introduced
by the 'f' variants, and to simplify additions of new GPU/PTX variants
to just adding a number to a list.
- bulk test changes to deal with the tablegen-generated strings.
krb5.conf: tolerate legacy unsupported libdefaults_aux
Historically TrueNAS has allowed krb5.conf auxiliary parameters
via libdefaults and appdefaults fields with minimal validation.
Validation is required generally for these fields because a
broken krb5.conf can have widely problematict impacts system-wide
leading to production down situations for the support team;
however, some universities have oddball kerberos domains that
require some minor tweaks.
In 25.10 when we transitioned to the new API schema for
directory services we removed a lot of parameters that could
get through our validator that were heavily labelled by the
upstream projects as things no one should *ever* use in
production. Among these removed and now invalid parameters was
allow_weak_crypto. Unfortunately, this broke a community member
who had explicitly set this exact parameter, but not in a nice
and fun way, but rather in a way that took many things with it.
[6 lines not shown]