[SLP] Fix crash from repeated operand with mixed commutativity
A value used as both a commutable and non-commutable operand of the
same call got double-counted in dependency tracking, adding a
dependency scheduling never releases and tripping an assertion.
Fixes #209005
Reviewers:
Pull Request: https://github.com/llvm/llvm-project/pull/209067
misc/thefuck: Fix runtime with Python 3.12
The old `imp` library was deprecated and is now removed in 3.12; switch
to importlib.
PR: 296596
Sponsored by: UNIS Labs
MFH: 2026Q3
(cherry picked from commit d07c24fc3fcb4e52dcc09e7c0e6ebad99556d42f)
Add sbintime.9 manual page
sbintime.9 is a manual page that documents the usage of sbintime_t and
its helper functions.
MFC after: 1 week
Reviewed by: ziaee, markj
Differential Revision: https://reviews.freebsd.org/D57931
misc/thefuck: Fix runtime with Python 3.12
The old `imp` library was deprecated and is now removed in 3.12; switch
to importlib.
PR: 296596
Sponsored by: UNIS Labs
MFH: 2026Q3
[ELF] Write the output to lld::outs() when -o is - (#209064)
When the output file is "-", write the image to lld::outs() (the
stdoutOS
argument of lld::elf::link()) instead of committing the
FileOutputBuffer,
which writes to the process's stdout. This lets lld used as a library
capture
the output in a raw_ostream without an open syscall.
This reimplements the stale #72061 and adds a unittest.
Add /s suffix to per-second ARC/L2ARC chart units
## Problem
Eight ARC/L2ARC charts in truenas_arcstats.chart.py (dmhit, dmioh, dmmis, l2hits, l2miss, l2read, l2bytes, l2wbytes) use netdata's incremental algorithm, which plots the counter delta divided by the collection interval, i.e. a per-second rate. Their units strings were bare names (e.g. l2bytes) with no /s, so the label read like a raw total even though the value is a rate. This was inconsistent with the sibling incremental charts (dread, ddread, dmread, ddhit, ddioh, ddmis) that already use /s, and with the chart context strings that already say "per second".
## Solution
Appended /s to the units string of those eight charts so every incremental chart's units label reflects the per-second rate it actually plots. Label-only change; the plotted values are unaffected, and there is no user-facing regression since the TrueNAS UI sources its axis labels from the reporting graphs' vertical_label, not from this netdata units field.
unlink the transformed temporary file on every commit failure
queue_message_commit() left the .comp/.enc temporary behind on an ENOSPC
rename failure and on the shared err path, so repeatedly triggering
transform or out-of-space failures accumulated orphaned files. unlink
tmppath on all of those paths.
from Andrew Griffiths, ok op@
reject empty or slash-bearing usernames before building the mbox path
mda_mbox_init() builds _PATH_MAILDIR/username and creates and chowns it as
root. the username comes from K_USERINFO table data, which is not checked
for slashes, so a dynamic userbase returning a slashed username could make
root create a path outside the mailbox namespace. in practice, it does not
affect default userbase which goes through getpwnam(), and it requires the
admin to voluntarily create a badly crafted username in the userbase.
from Andrew Griffiths (fixed by me), ok op@
Fix UPS Input Load graph showing Watts on a percentage axis
## Problem
The "UPS Input Load" report has `vertical_label = 'Percentage'` but pointed `get_chart_name()` at Netdata's `upsd_<id>.load_usage` chart, whose units are Watts (`ups.realpower`, or `ups.load/100 × ups.realpower.nominal`). So the graph rendered absolute power draw (e.g. ~117W for a ~30% load on a 390W UPS) under a "Percentage" axis. This regressed in the python.d→go.d Netdata migration, which renamed the chart from `nut_<id>.load` to `load_usage` without updating the label — the migration picked the wrong sibling chart.
## Solution
Point the chart at `upsd_<id>.load_percentage` (units: percentage), which maps to the raw NUT `ups.load` variable and matches both the existing label and title. This chart is gated on the same `ups.load` variable as `load_usage`, so it's available under identical conditions, and it populates even on UPSes that don't report realpower — where `load_usage` would be empty.
reject CR and LF in argv-derived fields before starting the SMTP dialogue
enqueue interpolates the sender, recipients and DSN options straight into
MAIL FROM / RCPT TO command lines. an embedded CR or LF split the command
boundary and injected additional SMTP commands over the local session, so
refuse any such field up front.
from Andrew Griffiths (fixed by me), ok op@
[Clang][Test] Fix -Wctad-maybe-unsupported in OperatorNewDeletePointersExtractorTest.cpp (#209012)
Fix warning: `'std::set' may not intend to support class template
argument deduction [-Wctad-maybe-unsupported]`, which is error under
-Werror.
std::set{*PtrId} does implicitly deduce to std::set<EntityId>, but it
is not explicit or user-defined CATD guide. Opt-in warning
-Wctad-maybe-unsupported flags it as maybe unsafe and unintended. The
warning is enabled at
https://github.com/llvm/llvm-project/blob/9083925dadb4/llvm/cmake/modules/HandleLLVMOptions.cmake#L977
Relates to #206600.
free the copied envelope on the smarthost lookup failure path
mta_on_smarthost() frees the malloc'd envelope on success, but the
smarthost == NULL branch tempfailed the message and returned without
freeing it, leaking a struct envelope per failed lookup.
from Andrew Griffiths, ok op@
free mda_subaddress in mda_envelope_free()
mda_envelope() duplicates the subaddress with xstrdup() when present but
mda_envelope_free() never released it, leaking one bounded string per
subaddressed local delivery.
from Andrew Griffiths, ok op@
use inflateEnd() to tear down the inflate stream in uncompress_gzip_chunk()
the decompression path sets up the stream with inflateInit2() but the
cleanup block called deflateEnd(), mismatching the zlib inflate/deflate
APIs and leaking the stream state on every gzip queue read.
from Andrew Griffiths, ok op@
Convert boot plugin to typesafe pattern
## Problem
The boot service was old-style dict-based code spread across three files (boot.py, boot_/format.py, boot_/boot_loader.py) that all declared the same BootService, so the framework silently merged them into a CompoundService. None of it was type-checked end to end, and every in-process consumer reached it through untyped string middleware.call('boot.*').
## Solution
- Consolidate everything into a single plugins/boot/ package using the port pattern: a lean BootService in __init__.py that delegates to plain, fully type-annotated module functions in disks.py/format.py/pool_ops.py, with @api_method(check_annotations=True) public methods and @private stubs. boot.get_state now returns a BootGetState model; internal callers use a dict state helper so nothing breaks on attribute-vs-key access.
- Register boot in main.py's ServiceContainer and have it own boot.environment as a sub-service, replacing BootServicesContainer.
- Expose the boot-pool name/disks cache through accessor functions instead of a module global. This also fixes a latent bug where libvirt/cdrom.py imported the global at module load (before setup runs), bound it to None, and so never filtered the boot pool out of CDROM path validation.
- Convert every same-process boot.* string call to typed call2/call_sync2 across sysdataset, zfs_events, disk, failover, and the zpool/audit/tunable/update/system_advanced plugins, the alert sources, and the cron/fstab makos, keeping each site's sync/async flavour.
- Keep the private update_initramfs/format models in the plugin (check_model_module requires private-method models to live there, not in the api package) and import them lazily from consumers, otherwise pulling boot/__init__ into the early service-init chain deadlocks on a partially-initialised middlewared.service.
- Add plugins/boot/ to mypy.yml.
stop parsing DNS answers once unpack_rr() reports failure
the MX, MX-preference and spf walkers looped on the attacker-controlled
ancount calling unpack_rr() without checking its return, processing stale
or uninitialized rr contents on malformed or truncated replies. break out
of the loop as soon as unpack_rr() fails.
from Andrew Griffiths, ok op@
chflags.1: Document the new UF_DONTCACHE flag
Commit 74654ba3b1b3 added and new chflags(1) flag called
"udontcache" or "dontcache". This patch documents this flag.
This is a content change.
Reviewed by: kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D58181
chflags: Add a new UF_DONTCACHE flag
This internet draft (which is close to being an RFC)
specifies a new NFSv4.2 attribute which tells the NFSv4.2
client to not cache file data. (Similar to O_DIRECT, but
triggered by this attribute set on the file on the NFSv4.2
server and not by the application's open(2).)
https://datatracker.ietf.org/doc/draft-ietf-nfsv4-uncacheable-files/
This patch adds a new chflags(1) flag called UF_DONTCACHE to
implement this.
Patches for NFS and ZFS will be done separately.
Reviewed by: kib
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D58181