]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
8 weeks agonetwork: use voffsetof() at more places
Yu Watanabe [Mon, 16 Feb 2026 02:20:20 +0000 (11:20 +0900)] 
network: use voffsetof() at more places

8 weeks agoudev: guess if usb devices are internal external (#40649)
Yu Watanabe [Mon, 16 Feb 2026 04:25:35 +0000 (13:25 +0900)] 
udev: guess if usb devices are internal external (#40649)

Actually we are defining databases to determine when a usb device is
inherent part of the system or if it's a external device.

Let's use the removable attribute of the port where it is connected to
say that. That gives us the ability to not rely on a particular vendor
only does external devices or to not having the need to be quirking
input subsystem for that purpose that will become unreliable as more and
more internal devices are connected over usb instead over ps2 or i2c
buses. Eg.
https://gitlab.freedesktop.org/libinput/libinput/-/commit/02b495e79022e64514015e1a3dea32997035dd4f?merge_request_iid=1389

Actually this has been seen as reliable in a small set of device from
normal laptops, to detachable ones. The need to check maxchild is 0 is
for detachable devices, pogo pin usbs are fixed, while we attach the
keyboard|touchpad dock the input devices tend to be directly connected
to that port and if the dock has more usbs tend to be a hub that then
exposes removable as unknow. If we don't set maxchild 0 we will not only
guess that the keyboard and touchpad are internal but also incorrectly
other input devices like mice connected to the dock's usb ports.

I have use a very generic name like INTEGRATION because is not actually
used for any other thing and is used to determine not only over usb bus
but for acpi, pci, platform actually.

Also a remap to actual libinput variables is done for compatibility
purposes. if it's possible to have only the INTEGRATION variable instead
multiple ones will be done in the future but is actually unclear.

This can also be used for example to achieve an actual feature that we
lack in linux, when a device with accelerometers and cameras is rotated
the video output is not, this tag the own device cameras as internal
while external ones as external to be able to only do that for the
internal ones.

Note that this has nothing to do with the removable attribute found in
usb storage devices where it's values can be 0 or 1. There is no
conflict at all because the removable attribute we check is specifically
the one found in usb port ones.

8 weeks agonetwork: add ModemManager support
Oleksandr Andrushchenko [Wed, 3 Sep 2025 07:20:24 +0000 (10:20 +0300)] 
network: add ModemManager support

[Match]
Name=wwan*

[Network]
LLDP=no
LinkLocalAddressing=no
IPv6AcceptRA=no

[ModemManager]
SimpleConnectPropertie]s=apn=internet ip-type=ipv4 allow-roaming=no pin=1111 operator-id=25503
RouteMetric=200
UseGateway=yes

Co-authored-by: Yu Watanabe <watanabe.yu+github@gmail.com>
8 weeks agobacklight: reduce clamp to 1%
David Santamaría Rogado [Mon, 29 Dec 2025 16:29:37 +0000 (17:29 +0100)] 
backlight: reduce clamp to 1%

Actually GNOME sets a clamp of 1% and divides in 20 steps the brightness
control. Using 5% clamp makes things like in a device with max value 640
to always be in the first brightness step in GNOME and we can't leave in
the minimum.

GNOME set steps of 640/20 = 32 with the zero step 640 * 1% = 6. When we
restart the device with the lowest bright systemd sees 6 but sets
640 * 5% = 32, so we get the brightness in the first step.

Tests in IPS and OLED panels have been done and 1% still seems a
comprensive minimun usable value so use that to allow all environments
to be able to set lower brightness values that won't be raised by
systemd at boot.

If your user enviroment allow to set excesive lower unusable values you
should blame it or yourself if you directle changes it through sysfs but
not systemd.

8 weeks agoudev: rules: guess devices if internal or external 40649/head
David Santamaría Rogado [Wed, 11 Feb 2026 18:28:02 +0000 (19:28 +0100)] 
udev: rules: guess devices if internal or external

Set ID_INTEGRATION variable to hint if a device is internal (inherent
part of the system) or external otherwise.

8 weeks agohwdb: don't error on empty hwdb file
David Santamaría Rogado [Sat, 14 Feb 2026 22:03:45 +0000 (23:03 +0100)] 
hwdb: don't error on empty hwdb file

8 weeks agotimesync: actually disables built-in fallback NTP servers when an empty string is... 40692/head
Yu Watanabe [Mon, 16 Feb 2026 00:00:42 +0000 (09:00 +0900)] 
timesync: actually disables built-in fallback NTP servers when an empty string is specified

Follow-up for 3745770ae4dcf262707882a38f6c5ba2684329a3.
Fixes #40621.

8 weeks agotimesync: return earlier when an empty string is specified
Yu Watanabe [Mon, 16 Feb 2026 00:51:36 +0000 (09:51 +0900)] 
timesync: return earlier when an empty string is specified

8 weeks agotimesync: rename have_fallbacks -> fallback_set
Yu Watanabe [Mon, 16 Feb 2026 00:50:46 +0000 (09:50 +0900)] 
timesync: rename have_fallbacks -> fallback_set

8 weeks agoboot: fix buffer alignment when doing block I/O (#40465)
Yu Watanabe [Mon, 16 Feb 2026 00:10:01 +0000 (09:10 +0900)] 
boot: fix buffer alignment when doing block I/O (#40465)

UEFI Block I/O Protocol has `Media->IoAlign` field dictating the minimum
alignment for I/O buffer. It's quite surprising this has been lingering
here unnoticed for years, seems like most UEFI implementations have
small or no alignment requirements. U-Boot is not the case here, and
requires at least 512 byte alignment, hence attempt to read GPT
partition table fail and in effect systemd-boot can not find XBOOTLDR
partition.

These patches allow to boot from XBOOTLDR partition on U-Boot - tested
with latest systemd revision and U-Boot master
(`8de6e8f8a076d2c9b6d38d8563db135c167077ec`) on x64 and ARM32, of which
both are failing without the patch.

Also fixes Bitlocker probing logic, which is the only other place where
raw block I/O is used, however this is untested.

8 weeks agolocale-util: allow overriding locale directory via environment
andre4ik3 [Wed, 11 Feb 2026 07:04:00 +0000 (07:04 +0000)] 
locale-util: allow overriding locale directory via environment

8 weeks agooomd: Return tristate status from oomd_cgroup_kill_mark() 40690/head
Chris Down [Sun, 15 Feb 2026 17:31:12 +0000 (01:31 +0800)] 
oomd: Return tristate status from oomd_cgroup_kill_mark()

oomd_cgroup_kill_mark() currently returns 0 on all non-error paths. But
the manager only logs that it marked for killing on `if (r > 0)`, which
is thus unreachable.

Changing it to `r >= 0` would also be wrong, because then we would log
on no-op paths.

So let's fix this by making the return value express what actually
happened:

- < 0: failure to queue the kill state
-   0: no new mark was created (already queued or dry-run)
- > 0: a new kill state was queued

8 weeks agooomd: Fix bug where we drop queued kill state on duplicate cgroup
Chris Down [Sun, 15 Feb 2026 17:30:02 +0000 (01:30 +0800)] 
oomd: Fix bug where we drop queued kill state on duplicate cgroup

oomd_cgroup_kill_mark() allocates a temporary OomdKillState and inserts
it into kill_states via set_ensure_put(). This is keyed by cgroup path.
When the same cgroup is already queued, set_ensure_put() dutifully
returns 0.

The function then returns with
_cleanup_(oomd_kill_state_removep) still armed, which eventually calls
oomd_kill_state_free().

oomd_kill_state_free() removes from kill_states by cgroup-path key, so
because this path already exists, it will remove the existing queued
kill state instead of just dropping the temporary object.

This is wrong and results in mistakenly drops the queued kill state on
duplicates.

This can happen when a cgroup is marked multiple times before the first
queued kill state is consumed. The result is lost kill-state tracking
and incorrect prekill/kill sequencing.

Handle r == 0 explicitly by freeing only the temporary object and
leaving the already queued state intact.

8 weeks agooomd: Prevent corruption of cgroup paths in Killed signal
Chris Down [Sat, 14 Feb 2026 16:05:12 +0000 (00:05 +0800)] 
oomd: Prevent corruption of cgroup paths in Killed signal

While looking at oomd behaviour in production I noticed that I always
get garbage cgroup paths for the Killed event. Looking more closely, I
noticed that while the signature is (string cgroup, string reason), we
currently erroneously pass the `OomdCGroupContext*` pointer itself as
the first argument to sd_bus_emit_signal(), rather than the ctx->path
string it contains.

The in-memory layout on affected machines in my case is:

    struct OomdCGroupContext {
        unsigned n_ref;
        /* padding */
        char *path;
        /* ... */
    }

...which explains the control characters, since they're garbage from
parsing n_ref, the path pointer, and later fields. At runtime, sd-bus
treats ctx as `const char *` and reads struct bytes as string data,
resulting in garbage being sent.

Pass ctx->path correctly so listeners receive the valid cgroup path.

8 weeks agoboot: respect minimal I/O alignment when doing block i/o 40465/head
Artur Kowalski [Thu, 29 Jan 2026 19:55:42 +0000 (20:55 +0100)] 
boot: respect minimal I/O alignment when doing block i/o

Fixes XBOOTLDR partition detection and bitlocker support when using
U-Boot as UEFI.

8 weeks agoboot: introduce xmalloc_aligned_pages
Artur Kowalski [Thu, 29 Jan 2026 17:42:24 +0000 (18:42 +0100)] 
boot: introduce xmalloc_aligned_pages

To be used for block I/O which may require specific buffer alignment.

8 weeks agomkosi: Remove some packages from the image
Daan De Meyer [Sat, 14 Feb 2026 22:05:52 +0000 (23:05 +0100)] 
mkosi: Remove some packages from the image

Let's slim down the image size a bit. None of the removed packages
should be required.

8 weeks agostring-util: Prevent infinite loop pegging CPU on malformed ESC input
Chris Down [Sat, 14 Feb 2026 16:40:14 +0000 (00:40 +0800)] 
string-util: Prevent infinite loop pegging CPU on malformed ESC input

string_has_ansi_sequence() currently does this to look for ESC input:

    t = memchr(s, 0x1B, ...)

So each iteration re-searches from the original start pointer. But if we
find an ESC byte that does *not* start a valid ANSI sequence (like "\x1B
", or an ESC at the end of the string), then ansi_sequence_length()
returns 0, and if that ESC is still in the search window, we will just
spin consuming 100% CPU forever.

Fix this by always advancing past rejected ESC bytes.

8 weeks agomkosi: update mkosi ref to 4b18ea8395e9cc2b1d247be93944f5539affe964 (#40681)
Daan De Meyer [Sat, 14 Feb 2026 17:31:26 +0000 (18:31 +0100)] 
mkosi: update mkosi ref to 4b18ea8395e9cc2b1d247be93944f5539affe964 (#40681)

4b18ea8395 sandbox: Make sure eventfd is CLOEXEC
23ea86d0cf Revert "Bump minimum python version to 3.10"
81fd30ec77 Revert "sandbox: Use os.eventfd()"
717020c97b Revert "Use python3.12 as interpreter in CentOS Stream 9
zipapp"
e1d0e45e3b Rework sandbox globbing and exist checks

8 weeks agomkosi: update mkosi ref to 4b18ea8395e9cc2b1d247be93944f5539affe964 40681/head
Daan De Meyer [Sat, 14 Feb 2026 15:04:57 +0000 (16:04 +0100)] 
mkosi: update mkosi ref to 4b18ea8395e9cc2b1d247be93944f5539affe964

4b18ea8395 sandbox: Make sure eventfd is CLOEXEC
23ea86d0cf Revert "Bump minimum python version to 3.10"
81fd30ec77 Revert "sandbox: Use os.eventfd()"
717020c97b Revert "Use python3.12 as interpreter in CentOS Stream 9 zipapp"
e1d0e45e3b Rework sandbox globbing and exist checks

8 weeks agotools: Fix changelog generation (again)
Daan De Meyer [Sat, 14 Feb 2026 15:04:08 +0000 (16:04 +0100)] 
tools: Fix changelog generation (again)

Using --first-parent --no-merges seems to exclude not just the merge
commits but all the commits from the merge as well. Let's use only
--no-merges to get just the commits without merges.

8 weeks agomkosi: Update to latest and two speed improvements (#40678)
Yu Watanabe [Sat, 14 Feb 2026 14:08:00 +0000 (23:08 +0900)] 
mkosi: Update to latest and two speed improvements (#40678)

8 weeks agopo: Translated using Weblate (Kazakh)
Baurzhan Muftakhidinov [Sat, 14 Feb 2026 06:27:29 +0000 (06:27 +0000)] 
po: Translated using Weblate (Kazakh)

Currently translated at 100.0% (264 of 264 strings)

Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/kk/
Translation: systemd/main

8 weeks agoTwo micro fixes for sd-json (#40676)
Zbigniew Jędrzejewski-Szmek [Sat, 14 Feb 2026 10:54:17 +0000 (11:54 +0100)] 
Two micro fixes for sd-json (#40676)

8 weeks agomkosi: Mark minimal images as Incremental=relaxed 40678/head
Daan De Meyer [Fri, 13 Feb 2026 21:21:35 +0000 (22:21 +0100)] 
mkosi: Mark minimal images as Incremental=relaxed

Building these over and over again is extremely wasteful. Let's just
build them once and not touch them again unless -ff is specified or
their cache is out-of-date, which is exactly what Incremental=relaxed
does.

This means mkosi.extra/ and such changes won't be picked up for these
anymore unless -ff is used, but that slight annoyance is totally
outweighed by the time saved building the images.

8 weeks agomkosi: Use mkosi.initrd.conf
Daan De Meyer [Fri, 13 Feb 2026 21:19:28 +0000 (22:19 +0100)] 
mkosi: Use mkosi.initrd.conf

A more straightforward way to extend the default initrd rather than
using a subimage. This mainly allows us to take advantage of mkosi
automatically figuring out whether the initrd needs to be built or not,
speeding up builds when building directory images as the initrd can be
skipped in that case.

8 weeks agomkosi: update mkosi ref to d6ddc66acb05d3d761d3f600c6b029319db9ae95
Daan De Meyer [Sat, 14 Feb 2026 09:36:09 +0000 (10:36 +0100)] 
mkosi: update mkosi ref to d6ddc66acb05d3d761d3f600c6b029319db9ae95

d6ddc66acb Use python3.12 as interpreter in CentOS Stream 9 zipapp
89d876c86f tests: fix running pytest on undetected distro
61a47eeb1c centos: Fix EPEL repositories for RHEL 10
e5aa19e2bc oci: allow user defined labels and annotations
1680fc5789 man: be more precise that the tools tree distribution is decided by the host distribution
7025b8e67d Support resizing output image

8 weeks agotest: do not fail when parsing PID that isn't thread-group leader (#40677)
Luca Boccassi [Fri, 13 Feb 2026 21:37:56 +0000 (21:37 +0000)] 
test: do not fail when parsing PID that isn't thread-group leader (#40677)

```
TEST-02-UNITTESTS.sh[4382]: [  707.393188] test-cgroup-util[426]: Failed to open pidfd for pid 414: Invalid argument
TEST-02-UNITTESTS.sh[4382]: [  707.393193] test-cgroup-util[426]: src/test/test-cgroup-util.c:249: Assertion failed: Expected "r = proc_dir_read_pidref(d, &pid)" to succeed, but got error: -22/EINVAL
```

The kernel can return EINVAL on pidfd_open() when the selected PID is
not a thread group leader. Don't fail the test, as we are iterating on
everything, so this can seldomly happen.

8 weeks agoAllow non-system users/groups in networkd and udevd again (#40612)
Yu Watanabe [Fri, 13 Feb 2026 20:41:01 +0000 (05:41 +0900)] 
Allow non-system users/groups in networkd and udevd again (#40612)

8 weeks agoFixes for option parsing (#40641)
Yu Watanabe [Fri, 13 Feb 2026 19:58:50 +0000 (04:58 +0900)] 
Fixes for option parsing (#40641)

Preparatory work split out of #40624.

8 weeks agosd-json: also skip assert_cc in VS Code parser 40676/head
Luca Boccassi [Fri, 13 Feb 2026 19:34:09 +0000 (19:34 +0000)] 
sd-json: also skip assert_cc in VS Code parser

For some reason the VS Code parser thinks sd_json_variant is still 48 bytes,
so skip the assert when running in that parser too

Follow-up for 337712e777bff389f53e26d5b378d2ceba7d98a8

8 weeks agosd-json: update comment regarding struct size
Luca Boccassi [Fri, 13 Feb 2026 19:32:37 +0000 (19:32 +0000)] 
sd-json: update comment regarding struct size

The assert at the bottom was updated when the size changed, but
the comment wasn't:

assert_cc(sizeof(sd_json_variant) == 40U);

Follow-up for 337712e777bff389f53e26d5b378d2ceba7d98a8

8 weeks agocore: add SetProperties varlink method 40356/head
Luca Boccassi [Sat, 20 Dec 2025 16:54:45 +0000 (16:54 +0000)] 
core: add SetProperties varlink method

Initial support for 'Markers' only

8 weeks agocore: ensure varlink Unit.List() can query inactive units
Luca Boccassi [Fri, 9 Jan 2026 18:15:06 +0000 (19:15 +0100)] 
core: ensure varlink Unit.List() can query inactive units

manager_get_unit() only returns loaded units, if a unit is
stopped and not referenced by anything it will be GCed, so
this method will return nothing. Use manager_load_unit()
instead so that a stopped unit gets loaded and we can
return its state to the caller, after checking that it
actually exists.

Follow-up for d2a8dbabf5e2676f436515cc821040bd24eb6003

8 weeks agovarlinkctl: add pluggable protocol support to sd-varlink
Michael Vogt [Wed, 11 Feb 2026 15:01:18 +0000 (16:01 +0100)] 
varlinkctl: add pluggable protocol support to sd-varlink

When sd_varlink_connect_url() gets an unknown URL we now
check if there is a `$LIBEXECDIR/varlink-bridges/$scheme`
binary and execute it (with the url as the first arguments).

This makes varlink more flexible as it provides a way to
dynamically add "bridges" in LIBEXECDIR/varlink-bridges/. This is
conceptually similar to the libvarlink `varlink --bridge` command
and allows to e.g. call varlink over http{,s} via e.g. the new
varlink-http-bridge.

With a running varlink-http-bridge [0] one can do:
```console
$ varlinkctl call http://localhost:8080/ws/sockets/io.systemd.Hostname \
    io.systemd.Hostname.Describe {}
{
        "Hostname" : "top",
...
```

Closes: https://github.com/systemd/systemd/issues/40640
[0] https://github.com/mvo5/varlink-http-bridge/pull/1

8 weeks agodissect: Various cleanups and fixes
Daan De Meyer [Fri, 13 Feb 2026 13:13:28 +0000 (14:13 +0100)] 
dissect: Various cleanups and fixes

- Only call have_effective_cap() if needed
- Fix comments and logging

Follow up for #40212

8 weeks agokmod-setup: fix loading virtio modules, and load other vsock transport modules (...
Zbigniew Jędrzejewski-Szmek [Fri, 13 Feb 2026 15:56:59 +0000 (16:56 +0100)] 
kmod-setup: fix loading virtio modules, and load other vsock transport modules (#40557)

Fixes #40161.
Fixes #40503.

8 weeks agoudevadm: do not explicitly set white color
Yu Watanabe [Fri, 13 Feb 2026 05:31:54 +0000 (14:31 +0900)] 
udevadm: do not explicitly set white color

Otherwise, output on black-on-white terminals is not visible.

Follow-up for 13005c8f2c7f0169728fef804f164c3574b8e0f7.
Fixes #40629.

8 weeks agoAssorted minor follow-ups (#40673)
Mike Yuan [Fri, 13 Feb 2026 15:30:57 +0000 (16:30 +0100)] 
Assorted minor follow-ups (#40673)

8 weeks agocore/service: correct desc for first-level credential refreshing process 40673/head
Mike Yuan [Fri, 13 Feb 2026 10:14:51 +0000 (11:14 +0100)] 
core/service: correct desc for first-level credential refreshing process

It doesn't join the unit namespace. It would fork again to do so
if needed.

8 weeks agocore/service: fix typo
Mike Yuan [Fri, 13 Feb 2026 10:16:47 +0000 (11:16 +0100)] 
core/service: fix typo

Addresses https://github.com/systemd/systemd/pull/40093#discussion_r2803104490

8 weeks agologin/meson.build: pkgsysconfdir cannot be 'no'
Mike Yuan [Fri, 6 Feb 2026 16:13:38 +0000 (17:13 +0100)] 
login/meson.build: pkgsysconfdir cannot be 'no'

Whether to install example configs to sysconfdir should be
(solely) controlled via install_sysconfdir_samples, as done
everywhere else.

8 weeks agobasic/meson.build: realign table header
Mike Yuan [Fri, 6 Feb 2026 22:34:20 +0000 (23:34 +0100)] 
basic/meson.build: realign table header

8 weeks agotest-capability-util: Migrate to new test framework and macros
Daan De Meyer [Fri, 13 Feb 2026 12:04:58 +0000 (13:04 +0100)] 
test-capability-util: Migrate to new test framework and macros

8 weeks agoresolve: refuse traffic from the local host only for queries
Carlos Peón Costa [Wed, 11 Feb 2026 08:19:26 +0000 (09:19 +0100)] 
resolve: refuse traffic from the local host only for queries

8 weeks agoportable: /run/systemd/portables => /run/portables
Daan De Meyer [Fri, 13 Feb 2026 09:24:11 +0000 (10:24 +0100)] 
portable: /run/systemd/portables => /run/portables

8 weeks agossh-proxy: Fix runtime directory
Daan De Meyer [Fri, 13 Feb 2026 08:20:48 +0000 (09:20 +0100)] 
ssh-proxy: Fix runtime directory

8 weeks agoFollow-ups for the metrics/report tool (#40642)
Daan De Meyer [Fri, 13 Feb 2026 10:37:34 +0000 (11:37 +0100)] 
Follow-ups for the metrics/report tool (#40642)

/cc @YapingLi04

8 weeks agoman: make it clear that homectl -A/T/N do not take an argument 40641/head
Zbigniew Jędrzejewski-Szmek [Wed, 17 Dec 2025 14:19:29 +0000 (15:19 +0100)] 
man: make it clear that homectl -A/T/N do not take an argument

Just like in the --help strings, we need to avoid confusion between
short options which take an argument and those that don't.

8 weeks agohomectl: drop --and-resize and --and-change-password
Zbigniew Jędrzejewski-Szmek [Wed, 17 Dec 2025 14:11:07 +0000 (15:11 +0100)] 
homectl: drop --and-resize and --and-change-password

The two options are were not documented or ever used in the codebase.
Additionally, the parser expected an argumentless option, while the option
table declared a required argument. So I think this was added for debugging
and never excercised properly. Since there was no public documentation for
those, it's as if they never existed, so it should be fine to drop them.

8 weeks agoresolvectl: split out helper to parse stdin
Zbigniew Jędrzejewski-Szmek [Tue, 9 Dec 2025 10:30:17 +0000 (11:30 +0100)] 
resolvectl: split out helper to parse stdin

No functional change, just splitting up of a lengthy function.

8 weeks agonspawn: split out helper to parse --private-users
Zbigniew Jędrzejewski-Szmek [Wed, 3 Dec 2025 22:18:13 +0000 (23:18 +0100)] 
nspawn: split out helper to parse --private-users

This is just to make parse_argv() slightly more managable.

8 weeks agocore/service: support credentials refreshing on reload (#40093)
Daan De Meyer [Fri, 13 Feb 2026 09:21:44 +0000 (10:21 +0100)] 
core/service: support credentials refreshing on reload (#40093)

Closes https://github.com/systemd/systemd/issues/21099
Closes https://github.com/systemd/systemd/issues/35227

8 weeks agometrics: fixing casing
Yaping Li [Wed, 11 Feb 2026 23:08:44 +0000 (15:08 -0800)] 
metrics: fixing casing

8 weeks agoTwo portabled fixes (#40664)
Yu Watanabe [Fri, 13 Feb 2026 07:53:29 +0000 (16:53 +0900)] 
Two portabled fixes (#40664)

8 weeks agorepart: set r/o GPT flag on verity sig partition too
Luca Boccassi [Fri, 13 Feb 2026 00:21:06 +0000 (00:21 +0000)] 
repart: set r/o GPT flag on verity sig partition too

The default image policy for the verity sig partition expects
the r/o flag to be set, but repart so far did not add it by
default if unset, like it does for the verity partition

8 weeks agokmod-setup: also load other vsock transport modules 40557/head
Yu Watanabe [Wed, 4 Feb 2026 07:11:38 +0000 (16:11 +0900)] 
kmod-setup: also load other vsock transport modules

Fixes #40161.

8 weeks agokmod-setup: fix loading virtio related drivers
Yu Watanabe [Tue, 3 Feb 2026 07:59:49 +0000 (16:59 +0900)] 
kmod-setup: fix loading virtio related drivers

It seems the device with modalias e.g. virtio:d00000013v, only appears
after the relevant module is loaded. So, we cannot use the string to
determine if we should load the module.

Fixes #40503.

8 weeks agobootctl: do not use the EFI path as XBOOTLDR path 40413/head
Yu Watanabe [Wed, 21 Jan 2026 12:39:46 +0000 (21:39 +0900)] 
bootctl: do not use the EFI path as XBOOTLDR path

When running in a container, EFI and XBOOTLDR partition check is
relaxed, hence /boot may be recognized as both EFI and XBOOTLDR
partition.

Before:
```
$ run0 systemd-nspawn -xD / --private-network --bind=/sys/firmware/efi/efivars --bind=/boot -E SYSTEMD_LOG_LEVEL=debug -- build/bootctl --variables=yes --no-pager -x
Failed to check file system type of "/efi": No such file or directory
Using EFI System Partition at /boot.
Using XBOOTLDR partition at /boot as $BOOT.
/boot
```

After:
```
$ run0 systemd-nspawn -xD / --private-network --bind=/sys/firmware/efi/efivars --bind=/boot -E SYSTEMD_LOG_LEVEL=debug -- build/bootctl --variables=yes -x
Failed to check file system type of "/efi": No such file or directory
Using EFI System Partition at /boot.
Didn't find an XBOOTLDR partition, using the ESP as $BOOT.
/boot
```

8 weeks agobootctl: do not show an empty () for ESP partition
Yu Watanabe [Wed, 21 Jan 2026 12:24:24 +0000 (21:24 +0900)] 
bootctl: do not show an empty () for ESP partition

Before:
```
$ run0 systemd-nspawn -xD / --private-network --bind=/sys/firmware/efi/efivars --bind=/boot -- build/bootctl --variables=yes --no-pager
(snip)
Boot Loader Entry Locations:
          ESP: /boot ()
       config: /boot//loader/loader.conf
     XBOOTLDR: /boot ($BOOT)
        token: fedora
(snip)
```

After:
```
run0 systemd-nspawn -xD / --private-network --bind=/sys/firmware/efi/efivars --bind=/boot -- build/bootctl --variables=yes --no-pager
(snip)
Boot Loader Entry Locations:
          ESP: /boot
       config: /boot//loader/loader.conf
     XBOOTLDR: /boot ($BOOT)
        token: fedora
(snip)
```

This also moves spurious position of new line in each output.

8 weeks agobootctl: make list command take --variables= option
Yu Watanabe [Wed, 21 Jan 2026 12:48:49 +0000 (21:48 +0900)] 
bootctl: make list command take --variables= option

8 weeks agobootctl: make status command take --variables= option
Yu Watanabe [Wed, 21 Jan 2026 10:41:54 +0000 (19:41 +0900)] 
bootctl: make status command take --variables= option

8 weeks agobootctl: make reboot-to-firmware command take --variables= option
Yu Watanabe [Wed, 21 Jan 2026 10:40:54 +0000 (19:40 +0900)] 
bootctl: make reboot-to-firmware command take --variables= option

8 weeks agobootctl: override is_efi_boot() check if --variables= option is specified
Yu Watanabe [Wed, 21 Jan 2026 10:39:28 +0000 (19:39 +0900)] 
bootctl: override is_efi_boot() check if --variables= option is specified

Fixes #40392.

8 weeks agobootctl: move arg_touch_variables checkers to bootctl-util.c
Yu Watanabe [Wed, 21 Jan 2026 10:36:10 +0000 (19:36 +0900)] 
bootctl: move arg_touch_variables checkers to bootctl-util.c

No functional change, just refactoring.

8 weeks agobootctl: refuse --variables=yes when EFI support is disabled
Yu Watanabe [Wed, 21 Jan 2026 11:52:52 +0000 (20:52 +0900)] 
bootctl: refuse --variables=yes when EFI support is disabled

8 weeks agoefivars: allow to override is_efi_boot()
Yu Watanabe [Wed, 21 Jan 2026 10:27:01 +0000 (19:27 +0900)] 
efivars: allow to override is_efi_boot()

8 weeks agopo: Added translation using Weblate (Kazakh)
Baurzhan Muftakhidinov [Thu, 12 Feb 2026 17:18:33 +0000 (17:18 +0000)] 
po: Added translation using Weblate (Kazakh)

Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
8 weeks agoTEST-72-SYSUPDATE: Use some very long partition names
Daan De Meyer [Thu, 12 Feb 2026 19:34:27 +0000 (20:34 +0100)] 
TEST-72-SYSUPDATE: Use some very long partition names

To catch issues like https://github.com/systemd/systemd/issues/40658.
The commit that fixes that issue can make the name even longer to ensure
we don't regress again in this regard.

8 weeks agosysupdate: Compute temporary paths before vacuuming
Daan De Meyer [Thu, 12 Feb 2026 15:17:36 +0000 (16:17 +0100)] 
sysupdate: Compute temporary paths before vacuuming

We don't want to vacuum anything if we're just going to fail just
afterwards because a GPT partition label exceeds the maximum size
so let's compute the temporary paths for all transfers before we do
any vacuuming or acquiring.

8 weeks agoRevert "hwdb: fix arrow keys on HP Elite Dragonfly G3"
Han Sol Jin [Mon, 9 Feb 2026 10:23:03 +0000 (02:23 -0800)] 
Revert "hwdb: fix arrow keys on HP Elite Dragonfly G3"

Prior to this commit, the behaviour looked like this:

| Keypress | Result       |
| -------- | ------------ |
| Up       | KEY_PAGEUP   |
| Down     | KEY_PAGEDOWN |
| Left     | KEY_LEFT     |
| Right    | KEY_RIGHT    |
| Fn+Up    | KEY_UP       |
| Fn+Down  | KEY_DOWN     |
| Fn+Left  | KEY_HOME     |
| Fn+Right | KEY_END      |

This commit would fix it so that PGUP/PGDN would also require the Fn
key so that the arrow keys behave identically depending on whether Fn
was pressed.

Presumably after a BIOS update, HP seems to have fixed the order. This
now means this commit is now behaving exactly as the table above.

Revert the commit to restore the intended behaviour:

| Keypress | Result       |
| -------- | ------------ |
| Up       | KEY_UP       |
| Down     | KEY_DOWN     |
| Left     | KEY_LEFT     |
| Right    | KEY_RIGHT    |
| Fn+Up    | KEY_PAGEUP   |
| Fn+Down  | KEY_PAGEDOWN |
| Fn+Left  | KEY_HOME     |
| Fn+Right | KEY_END      |

This reverts commit 4fd7c712dcba3c4ed7183ba327d0b88d9b0be9bb.

Signed-off-by: Han Sol Jin <hansol@hansol.ca>
8 weeks agoportable: do not apply extension image policy if not attaching image 40664/head
Luca Boccassi [Thu, 12 Feb 2026 21:59:29 +0000 (21:59 +0000)] 
portable: do not apply extension image policy if not attaching image

Image policy is only for images, so skip for other types

Follow-up for d05961549277f15399a45cdf42d4d5f3e5ed8097

8 weeks agoportable: fix --force flag combination with directory extension
Luca Boccassi [Thu, 12 Feb 2026 21:57:26 +0000 (21:57 +0000)] 
portable: fix --force flag combination with directory extension

The check for image type uses the wrong variable, so it's applied
when it shouldn't.

Follow-up for 06768b90a32ac0d36252ebc5f426ad471bf29fce

8 weeks agoudev: rules: fix camera comparison
David Santamaría Rogado [Thu, 12 Feb 2026 16:29:12 +0000 (17:29 +0100)] 
udev: rules: fix camera comparison

actually that is intended to be a comparison

8 weeks agoquirks: sensor: squash toshiba tablets
David Santamaría Rogado [Thu, 12 Feb 2026 16:24:46 +0000 (17:24 +0100)] 
quirks: sensor: squash toshiba tablets

actually all of them have the same accel mount matrix.

8 weeks agoSwitch back to 'http' in SVG files (#40661)
Tabis Kabis [Thu, 12 Feb 2026 17:49:19 +0000 (18:49 +0100)] 
Switch back to 'http' in SVG files (#40661)

Firefox & Chrome don't render images because of 'https' being used in the SVG.
Switch back to 'http'.

Follow-up for 0922f62126297e59c03bc9e1b1f4bd6c362604ba

8 weeks agoCODING_STYLE: add a brief log msg style guide
Lennart Poettering [Tue, 10 Feb 2026 14:12:49 +0000 (15:12 +0100)] 
CODING_STYLE: add a brief log msg style guide

8 weeks agoAdd sensor entry for Toshiba Encore WT10A-108
Betacentury [Thu, 12 Feb 2026 09:20:14 +0000 (10:20 +0100)] 
Add sensor entry for Toshiba Encore WT10A-108

Added sensor configuration for Toshiba Encore WT10A-108 tablet.

8 weeks agodissect: Various fixes and improvements (#40212)
Daan De Meyer [Thu, 12 Feb 2026 10:26:18 +0000 (11:26 +0100)] 
dissect: Various fixes and improvements (#40212)

8 weeks agodissect: Use must_be_root() 40212/head
Daan De Meyer [Thu, 12 Feb 2026 08:44:29 +0000 (09:44 +0100)] 
dissect: Use must_be_root()

8 weeks agoshift-uid: Add debug logging
Daan De Meyer [Thu, 5 Feb 2026 20:42:48 +0000 (21:42 +0100)] 
shift-uid: Add debug logging

8 weeks agodissect: Allow --shift for users with CAP_CHOWN
Daan De Meyer [Thu, 5 Feb 2026 20:42:27 +0000 (21:42 +0100)] 
dissect: Allow --shift for users with CAP_CHOWN

8 weeks agodissect: Introduce --copy-ownership= to configure chown behavior
DaanDeMeyer [Sat, 27 Dec 2025 19:37:02 +0000 (20:37 +0100)] 
dissect: Introduce --copy-ownership= to configure chown behavior

Currently, if we're copying a file, we won't copy the owner UID/GID
from the source. If we're copying a directory, we will copy the owner
UID/GID from the source. Let's give users a bit more control over this
behavior by introducing --copy-ownership= which will default to the
current behavior but allows users to explicitly enable/disable copying
of ownership.

8 weeks agodissect: Make --mount/--unmount/--with work unprivileged
DaanDeMeyer [Fri, 26 Dec 2025 21:18:29 +0000 (22:18 +0100)] 
dissect: Make --mount/--unmount/--with work unprivileged

Let's check for CAP_SYS_ADMIN instead of root for these, and make
unmounting more graceful if we can't access the backing loop device
because of permission issues. This allows mounting and unmounting images
from an unprvileged mount namespace. The actual files in the image will
end up owned by nobody:nobody because we'll be in an unprivileged user
namespace, but assuming the directory permissions are not too strict, this
still allows interacting with the image in useful ways.

8 weeks agodissect: Fix wrong errno passed to log message
DaanDeMeyer [Fri, 26 Dec 2025 21:36:39 +0000 (22:36 +0100)] 
dissect: Fix wrong errno passed to log message

8 weeks agodissect: Fix segmentation fault if loop device is not provided
DaanDeMeyer [Fri, 26 Dec 2025 21:36:21 +0000 (22:36 +0100)] 
dissect: Fix segmentation fault if loop device is not provided

8 weeks agodissect: Fix logging in (with)
DaanDeMeyer [Fri, 26 Dec 2025 21:36:08 +0000 (22:36 +0100)] 
dissect: Fix logging in (with)

8 weeks agodissect: Don't use private userns for --copy-to/--copy-from
DaanDeMeyer [Fri, 26 Dec 2025 20:51:00 +0000 (21:51 +0100)] 
dissect: Don't use private userns for --copy-to/--copy-from

These actions interact with the host. The former needs privileges to
write into the image, the latter needs privileges to write on the host.
Neither will have the privileges required if the image is attached under
a private userns, hence, don't use one.

2 months agoreport: simplify error propagation 40642/head
Zbigniew Jędrzejewski-Szmek [Mon, 9 Feb 2026 11:15:56 +0000 (12:15 +0100)] 
report: simplify error propagation

Returning EXIT_* from an inner function is unusual and better
avoided. Let's just return a negative value and let the caller
do the conversion.

2 months agosd-varlink: Allow using sd_varlink_reply() in streaming methods (#40546)
Daan De Meyer [Wed, 11 Feb 2026 13:58:12 +0000 (14:58 +0100)] 
sd-varlink: Allow using sd_varlink_reply() in streaming methods (#40546)

2 months agobootctl: Drop SD_VARLINK_NULLABLE from ListBootEntries IDL 40546/head
Daan De Meyer [Sun, 8 Feb 2026 21:16:52 +0000 (22:16 +0100)] 
bootctl: Drop SD_VARLINK_NULLABLE from ListBootEntries IDL

9e10f3a7e800ad67be8d8b14ae158a27438814f0 changed the implementation
to report an error instead of an empty object but the IDL was not
adjusted. Let's fix that.

2 months agotree-wide: Migrate to varlink_set_sentinel()
Daan De Meyer [Tue, 3 Feb 2026 11:51:46 +0000 (12:51 +0100)] 
tree-wide: Migrate to varlink_set_sentinel()

2 months agoresolve: Make sure we free varlink subscription sets
Daan De Meyer [Tue, 3 Feb 2026 08:42:15 +0000 (09:42 +0100)] 
resolve: Make sure we free varlink subscription sets

2 months agosd-varlink: Introduce varlink_set_sentinel()
Daan De Meyer [Mon, 2 Feb 2026 13:23:40 +0000 (14:23 +0100)] 
sd-varlink: Introduce varlink_set_sentinel()

Streaming methods which are not used as a continuous subscription but
instead only send a series of objects all end up with the same workaround
to be able to figure out when to send sd_varlink_reply() or sd_varlink_notify().
Let's generalize this in sd-varlink itself.

Let's introduce the concept of a sentinel, which is a reply that will be sent
by sd-varlink if no other reply was queued by a method callback. The sentinel
is configured with varlink_set_sentinel(). If a sentinel is configured,
sd_varlink_reply() can be used more than once in streaming methods to queue
multiple values to stream to the client. The last queued reply is not sent
until the callback finishes. When the callback finishes, the last reply is
sent without "continues: more". If no reply was queued, the sentinel is sent.

This always using only sd_varlink_reply() in such streaming methods and
leaves sd_varlink_notify() available solely for continuous subscription
streaming methods, where we never use sd_varlink_reply() and instead disconnect
when the server exits.

2 months agosd-varlink: Move code around
Daan De Meyer [Mon, 2 Feb 2026 11:59:06 +0000 (12:59 +0100)] 
sd-varlink: Move code around

Preparation for next commits

2 months agovarlink-unit: Coding style cleanups
Daan De Meyer [Wed, 11 Feb 2026 08:39:04 +0000 (09:39 +0100)] 
varlink-unit: Coding style cleanups

2 months agonspawn: simplify parsing of --hostname/--machine
Zbigniew Jędrzejewski-Szmek [Wed, 3 Dec 2025 21:58:46 +0000 (22:58 +0100)] 
nspawn: simplify parsing of --hostname/--machine

2 months agoreport: fix hang when we start skipping metrics
Zbigniew Jędrzejewski-Szmek [Wed, 11 Feb 2026 11:44:13 +0000 (12:44 +0100)] 
report: fix hang when we start skipping metrics

Fixup for 0ec663a41fc49a3e4ec592c4e0037f4bc7e8f6fc.

2 months agoMetrics: Refactor to drop usage of strv
Yaping Li [Mon, 9 Feb 2026 14:47:27 +0000 (06:47 -0800)] 
Metrics: Refactor to drop usage of strv

This addresses Daan's feedback on #39202

2 months agojournal-upload: drop custom option error handling
Zbigniew Jędrzejewski-Szmek [Mon, 8 Dec 2025 09:52:11 +0000 (10:52 +0100)] 
journal-upload: drop custom option error handling

The line to set opterr=0 was added in the initial commit in
3d090cc6f34e5970765dd1e7ee5e648a056d180d. But afaict, this never worked as
intended, because ':' must be the first char in optstring given to
getopt_long() for it to return ':' for a missing option value. Since
this wasn't set, getopt_long() would return '?', and the missing value
would be handled as an unknown option:
  $ build/systemd-journal-upload --key
  Unknown option --key.
  $ build/systemd-journal-upload --asdf
  Unknown option --asdf.

Let's just do the standard thing:
  $ build/systemd-journal-upload --key
  build/systemd-journal-upload: option '--key' requires an argument
  $ build/systemd-journal-upload --asdf
  build/systemd-journal-upload: unrecognized option '--asdf'