]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
4 weeks agomeasure: figure success of measurement correctly 41072/head
Lennart Poettering [Thu, 12 Mar 2026 13:41:43 +0000 (14:41 +0100)] 
measure: figure success of measurement correctly

Found by Claude Code Review.

4 weeks agopcrlock: don't accept PCRs > 23 from firmware event log
Lennart Poettering [Thu, 12 Mar 2026 13:31:42 +0000 (14:31 +0100)] 
pcrlock: don't accept PCRs > 23 from firmware event log

Let's harden ourselves against shitty firmware which might report an
invalid PCR.

(This is not really a security issue, more a robustness issue, after all
firmware generally comes with highest privileges and trust, even though
it might just be shit)

Fixes an issue found with Claude code review

4 weeks agotest: use --nogpgcheck instead of --no-gpgchecks in TEST-88-UPGRADE
Ivan Kruglov [Thu, 12 Mar 2026 12:14:40 +0000 (05:14 -0700)] 
test: use --nogpgcheck instead of --no-gpgchecks in TEST-88-UPGRADE

--no-gpgchecks was introduced in 920483872449 but is only available in
dnf5. Use --nogpgcheck instead, which is supported by both dnf4 and
dnf5 (where it is an alias for --no-gpgchecks).

Fixes test failure on distros still using dnf4 (e.g. CentOS/RHEL 9).

Co-developed-by: Claude <claude@anthropic.com>
4 weeks agocleanups for machined/nspawn (#41060)
Zbigniew Jędrzejewski-Szmek [Thu, 12 Mar 2026 08:39:30 +0000 (09:39 +0100)] 
cleanups for machined/nspawn (#41060)

4 weeks agodocs: contain image sizing and prevent overflow on mobile
Rito Rhymes [Thu, 12 Mar 2026 01:55:22 +0000 (21:55 -0400)] 
docs: contain image sizing and prevent overflow on mobile

`max-width: 100%` keeps images from expanding beyond
their container and creating horizontal overflow scroll
on small screens.

`height: auto` ensures the image scales proportionally
when width is adjusted.

4 weeks agodocs: wrap bare enum constants in inline code in JOURNAL_FILE_FORMAT
Rito Rhymes [Thu, 12 Mar 2026 03:54:10 +0000 (23:54 -0400)] 
docs: wrap bare enum constants in inline code in JOURNAL_FILE_FORMAT

4 weeks agoFix text overflow for long URLs and inline code blocks (#41064)
Zbigniew Jędrzejewski-Szmek [Thu, 12 Mar 2026 08:36:32 +0000 (09:36 +0100)] 
Fix text overflow for long URLs and inline code blocks (#41064)

## Summary
Long string URLs and inline code blocks can exceed page width and cause
horizontal scroll overflow that breaks page layouts on smaller screens.
This fix ensures those long strings can wrap down as needed to preserve
the layout. The only code blocks that are affected are those that are
inline span within text paragraphs and are effectively stylized text; it
does not affect `<pre>` code blocks where fidelity is prioritized and
contained horizontal scroll is preferred.

## Before and After Screenshots

### `/TPM2_PCR_MEASUREMENTS/` code overflow

**BEFORE**
<img width="400" height="770" alt="TPM2-before"
src="https://github.com/user-attachments/assets/87da9d7a-d757-4fe0-9496-5c17ce31a14e"
/>

<br /><br />

**AFTER**
<img width="400" height="770" alt="TPM2-after"
src="https://github.com/user-attachments/assets/e48ba635-6c73-46a7-a29a-673a253fa76b"
/>

### `/PRESET/` URL overflow

**BEFORE**
<img width="400" height="776" alt="PRESET-before"
src="https://github.com/user-attachments/assets/da4a6346-c53b-4ce0-9ec8-8e58b634174e"
/>

<br /><br />

**AFTER**
<img width="400" height="776" alt="PRESET-after"
src="https://github.com/user-attachments/assets/be5fa824-4891-46ac-9f6e-08490cda8bd9"
/>

4 weeks agodocs: allow long inline code to wrap to prevent overflow on mobile 41064/head
Rito Rhymes [Thu, 12 Mar 2026 03:36:42 +0000 (23:36 -0400)] 
docs: allow long inline code to wrap to prevent overflow on mobile

4 weeks agodocs: allow long links to wrap to prevent overflow on mobile
Rito Rhymes [Thu, 12 Mar 2026 03:34:40 +0000 (23:34 -0400)] 
docs: allow long links to wrap to prevent overflow on mobile

4 weeks agonspawn: normalize pivot_root paths 41060/head
Luca Boccassi [Wed, 11 Mar 2026 13:27:14 +0000 (13:27 +0000)] 
nspawn: normalize pivot_root paths

Originally reported on yeswehack.com as:
YWH-PGM9780-116

Follow-up for b53ede699cdc5233041a22591f18863fb3fe2672

4 weeks agonspawn: apply BindUser/Ephemeral from settings file only if trusted
Luca Boccassi [Wed, 11 Mar 2026 12:15:26 +0000 (12:15 +0000)] 
nspawn: apply BindUser/Ephemeral from settings file only if trusted

Originally reported on yeswehack.com as:
YWH-PGM9780-116

Follow-up for 2f8930449079403b26c9164b8eeac78d5af2c8df
Follow-up for a2f577fca0be79b23f61f033229b64884e7d840a

4 weeks agomachined: reject invalid class types when registering machines
Luca Boccassi [Sun, 8 Mar 2026 14:30:52 +0000 (14:30 +0000)] 
machined: reject invalid class types when registering machines

Follow-up for fbe550738d03b178bb004a1390e74115e904118a

4 weeks agohwdb/keyboard: fix Positron vendor location
Mikhail Novosyolov [Wed, 11 Mar 2026 19:27:58 +0000 (22:27 +0300)] 
hwdb/keyboard: fix Positron vendor location

Move lines without changing them.
Fixes: 9aad3336f ("hwdb/keyboard: Map FN key on Positron Proxima 15")
(https://github.com/systemd/systemd/pull/40929)

4 weeks agocore: limit number of LogExtraFields (#41044)
Luca Boccassi [Wed, 11 Mar 2026 19:40:43 +0000 (19:40 +0000)] 
core: limit number of LogExtraFields (#41044)

We have two places where those fields can be set: config and the dbus
interface. Let's clamp down on the number in both places. But in
principle, we could also be upgrading (through
serialization/deserialization) from an older systemd which didn't
enforce this limit, so also check on deserialization. A user could have
a unit with lots and lots of ExtraFields, but not enough to cause the
issue in #40916. To handle this gracefully, ignore the extra fields,
like we do in the parser. Where the field is used, assert that we are
within the expected bounds.

Fixes #40916.

Reproducer:
```console
$ python3 -c 'from pydbus import SystemBus; from gi.repository import GLib; SystemBus().get("org.freedesktop.systemd1", "/org/freedesktop/systemd1").StartTransientUnit("crash.service", "fail", [("ExecStart", GLib.Variant("a(sasb)", [("/bin/true", ["/bin/true"], False)])), ("LogExtraFields", GLib.Variant("aay", [b"F%d=x" % i for i in range(140000)]))], [])' Traceback (most recent call last):
  File "<string>", line 1, in <module>
    from pydbus import SystemBus; from gi.repository import GLib; SystemBus().get("org.freedesktop.systemd1", "/org/freedesktop/systemd1").StartTransientUnit("crash.service", "fail", [("ExecStart", GLib.Variant("a(sasb)", [("/bin/true", ["/bin/true"], False)])), ("LogExtraFields", GLib.Variant("aay", [b"F%d=x" % i for i in range(140000)]))], [])
                                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/pydbus/proxy_method.py", line 102, in __call__
    raise error
  File "/usr/lib/python3.14/site-packages/pydbus/proxy_method.py", line 97, in __call__
    result = instance._bus.con.call_sync(*call_args)
gi.repository.GLib.GError: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Too many extra log fields. (16)
```

4 weeks agomeasure-tool: always sign with SHA256
Lennart Poettering [Wed, 11 Mar 2026 16:27:12 +0000 (17:27 +0100)] 
measure-tool: always sign with SHA256

We should not use the bank algorithm for the signing, as we only support
validating via SHA256. Fix that.

Fixes: #40245
4 weeks agoinclude diskseq in dissection verity DM devices (#41050)
Luca Boccassi [Wed, 11 Mar 2026 17:28:20 +0000 (17:28 +0000)] 
include diskseq in dissection verity DM devices (#41050)

4 weeks agosd-ndisc: fix address family check
Lennart Poettering [Wed, 11 Mar 2026 15:29:01 +0000 (16:29 +0100)] 
sd-ndisc: fix address family check

Issue reported by zhengg-research

4 weeks agoTEST-07-PID1: add small test for LogExtraFields 41044/head
Zbigniew Jędrzejewski-Szmek [Wed, 11 Mar 2026 12:15:57 +0000 (13:15 +0100)] 
TEST-07-PID1: add small test for LogExtraFields

4 weeks agocore/unit: shorten code
Zbigniew Jędrzejewski-Szmek [Wed, 11 Mar 2026 11:50:49 +0000 (12:50 +0100)] 
core/unit: shorten code

I wanted to use _cleanup_(unlink_tempfilep), but the type doesn't
match (char ** vs. char (*)[]), so the goto remains.

4 weeks agocore: limit number of LogExtraFields
Zbigniew Jędrzejewski-Szmek [Wed, 11 Mar 2026 11:03:19 +0000 (12:03 +0100)] 
core: limit number of LogExtraFields

We have two places where those fields can be set: config and the dbus
interface. Let's clamp down on the number in both places. But in principle, we
could also be upgrading (through serialization/deserialization) from an older
systemd which didn't enforce this limit, so also check on deserialization. A
user could have a unit with lots and lots of ExtraFields, but not enough to
cause the issue in #40916. To handle this gracefully, ignore the extra fields,
like we do in the parser. Where the field is used, assert that we are within
the expected bounds.

Fixes #40916.

Reproducer:
$ python3 -c 'from pydbus import SystemBus; from gi.repository import GLib; SystemBus().get("org.freedesktop.systemd1", "/org/freedesktop/systemd1").StartTransientUnit("crash.service", "fail", [("ExecStart", GLib.Variant("a(sasb)", [("/bin/true", ["/bin/true"], False)])), ("LogExtraFields", GLib.Variant("aay", [b"F%d=x" % i for i in range(140000)]))], [])'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
    from pydbus import SystemBus; from gi.repository import GLib; SystemBus().get("org.freedesktop.systemd1", "/org/freedesktop/systemd1").StartTransientUnit("crash.service", "fail", [("ExecStart", GLib.Variant("a(sasb)", [("/bin/true", ["/bin/true"], False)])), ("LogExtraFields", GLib.Variant("aay", [b"F%d=x" % i for i in range(140000)]))], [])
                                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/site-packages/pydbus/proxy_method.py", line 102, in __call__
    raise error
  File "/usr/lib/python3.14/site-packages/pydbus/proxy_method.py", line 97, in __call__
    result = instance._bus.con.call_sync(*call_args)
gi.repository.GLib.GError: g-dbus-error-quark: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Too many extra log fields. (16)

4 weeks agocore: fix reloading multiple confexts at the same time
Luca Boccassi [Wed, 11 Mar 2026 14:20:21 +0000 (14:20 +0000)] 
core: fix reloading multiple confexts at the same time

[] has higher precedence than pointer dereference, hence hilarity
ensues as soon as there are multuple images

Originally reported on yeswehack.com as:
YWH-PGM9780-122

Follow-up for dfdeb0b1cbb05a213f0965eedfe0e7ef06cd39d3

4 weeks agodbus-cgroup: Fix copy paste error
Daan De Meyer [Sat, 7 Mar 2026 22:04:38 +0000 (23:04 +0100)] 
dbus-cgroup: Fix copy paste error

Let's set the appropriate field for ManagedOOMMemoryPressureDurationUSec=
and not a totally different one.

4 weeks agoudev-builtin-net-id: print cescaped bad attributes
Zbigniew Jędrzejewski-Szmek [Wed, 11 Mar 2026 10:27:48 +0000 (11:27 +0100)] 
udev-builtin-net-id: print cescaped bad attributes

Follow-up for 16325b35fa6ecb25f66534a562583ce3b96d52f3. Let's
log those bad value to make it easier to figure out why things
are not working if we reject an attribute.

4 weeks agodissect-image: include diskseq in DM names, to avoid any name clashes 41050/head
Lennart Poettering [Wed, 11 Mar 2026 15:56:59 +0000 (16:56 +0100)] 
dissect-image: include diskseq in DM names, to avoid any name clashes

4 weeks agodissect-image: don't do path based ops on a non-path
Lennart Poettering [Wed, 11 Mar 2026 15:45:10 +0000 (16:45 +0100)] 
dissect-image: don't do path based ops on a non-path

Also, better use path_extract_filename() when extracting filenames
from paths.

Also, why void* for the 'base' parameter?

4 weeks agoboot: impose section limit when loading PE from memory too
Luca Boccassi [Tue, 10 Mar 2026 21:07:52 +0000 (21:07 +0000)] 
boot: impose section limit when loading PE from memory too

pe_section_table_from_file already checks with SECTION_TABLE_BYTES_MAX,
do the same in pe_section_table_from_base() just in case.

Originally reported on yeswehack.com as:
YWH-PGM9780-117

Follow-up for f4e081051d950a09ce9331ba55eaf604dac72652

4 weeks agoudev: various cleanups and sanitizations (#40983)
Zbigniew Jędrzejewski-Szmek [Wed, 11 Mar 2026 10:06:53 +0000 (11:06 +0100)] 
udev: various cleanups and sanitizations (#40983)

4 weeks agoupdate TODO
Lennart Poettering [Wed, 11 Mar 2026 09:31:39 +0000 (10:31 +0100)] 
update TODO

4 weeks agoChores for RC3 (#41023)
Zbigniew Jędrzejewski-Szmek [Wed, 11 Mar 2026 07:34:42 +0000 (08:34 +0100)] 
Chores for RC3 (#41023)

4 weeks agouserdb: mark PII fields as sensitive in user records
Dylan M. Taylor [Fri, 6 Mar 2026 15:05:32 +0000 (10:05 -0500)] 
userdb: mark PII fields as sensitive in user records

Mark realName, emailAddress, and location as sensitive in JSON user
records so that they are excluded from debug log output. These fields
contain personally identifiable information that should not be leaked
in logs, which are generally more accessible than the user database
itself.

4 weeks agosd-dhcp-client: several fixlets for sending RELEASE or DECLINE (#41002)
Yu Watanabe [Wed, 11 Mar 2026 01:17:44 +0000 (10:17 +0900)] 
sd-dhcp-client: several fixlets for sending RELEASE or DECLINE (#41002)

Fixes #39299.

4 weeks agotest-network: add test case for sending DHCPv4 RELEASE message 41002/head
Yu Watanabe [Mon, 9 Mar 2026 20:07:44 +0000 (05:07 +0900)] 
test-network: add test case for sending DHCPv4 RELEASE message

4 weeks agosd-dhcp-client: several fixlets for sending RELEASE or DECLINE
Yu Watanabe [Mon, 9 Mar 2026 06:18:24 +0000 (15:18 +0900)] 
sd-dhcp-client: several fixlets for sending RELEASE or DECLINE

- Extract common logic to client_send_release_or_decline().
- Do not send DECLINE message on BOOTP protocol.
- Drop redundant assignment of chaddr, as it is already set by
  client_message_init() -> dhcp_message_init().
- Do not assign acquired address in ciaddr field of DECLINE message,
  but use Requested IP Address option.
- Broadcast DECLINE message, rather than unicast.
- Set server identifier in both cases.

Fixes #39299.

4 weeks agoportable: Test pinning a single fstype on an GPT image with verity
Rodrigo Campos [Mon, 9 Mar 2026 13:38:54 +0000 (14:38 +0100)] 
portable: Test pinning a single fstype on an GPT image with verity

This tests a GPT image with a single fstype using verity. This was
broken and fixed by the previous commit.

4 weeks agodissect: Don't bypass blkid *_lookup_value() to decide USAGE
Rodrigo Campos [Fri, 6 Mar 2026 15:54:02 +0000 (16:54 +0100)] 
dissect: Don't bypass blkid *_lookup_value() to decide USAGE

After commit "core: reuse existing dm-verity device for single
filesystem images pinned by policy" (0bd766553cbf), when I attach a
portable image (erofs+verity) and try to start a service, it fails with:

  Partition root discovered with policy 'unprotected' but 'verity+read-only-on+growfs-off+erofs' was required, refusing.
  Failed to dissect image: Operation not possible due to RF-kill

The image does have verity, in fact the RootImagePolicy= field was added
automatically.

The inconsistency between what is found at attach vs when starting the
service comes from the fact that dissect_image() is called with a
different policy as parameter and the recent shortcut added.

At attach we do this:

dissect_image(policy="*")
    partition_policy_determine_fstype(policy)
      partition_policy_flags_to_string(...) // mask is 0, returns 0
    -> returns NULL // root_fstype_string is not set
    if (root_fstype_string) // false
      sym_blkid_probe_lookup_value()...

At start, as we do have the policy set, we do:

dissect_image(policy="root=verity+...+erofs:root-verity=...")
    partition_policy_determine_fstype(policy)
      partition_policy_flags_to_string(...) // returns 1
    -> sets root_fstype_string to "erofs"
    if (root_fstype_string) // true
       usage = "filesystem"

Then, the service is blocked to start with the aforementioned error.

It's correct for partition_policy_determine_fstype() to set erofs in
that case, and other callers seem to expect this behavior on similar
cases, but what is not correct is to assume that this means it's a
filesystem. Usage in this case should still be unset.

Let's just always do the lookup, as that gets us the correct answer reliably
and we already did the slow part that is the probe.

The call to `sym_blkid_do_safeprobe()` is a few lines above. The call to
the lookup function isn't very expensive. blkid_probe_lookup_value()[1]
calls __blkid_probe_lookup_value(), which searches on a list[2], IIUC in
memory and no IO is used. It's a linear search of the property.

[1]: https://github.com/util-linux/util-linux/blob/0fd08f19e7a3bc37509491d06a664cfb47be7cd8/libblkid/src/probe.c#L2299
[2]: https://github.com/util-linux/util-linux/blob/0fd08f19e7a3bc37509491d06a664cfb47be7cd8/libblkid/src/probe.c#L2343

4 weeks agosd-boot: fix silly copy/paste mistake
Michael Vogt [Tue, 10 Mar 2026 20:51:24 +0000 (21:51 +0100)] 
sd-boot: fix silly copy/paste mistake

This fixes a very silly copy/paste mistake in 3f95881 - sorry for
that and thanks to Raul Tambre  for reporting.

Closes https://github.com/systemd/systemd/issues/40844

4 weeks agoudev: ensure tag parsing stays within bounds 40983/head
Luca Boccassi [Fri, 6 Mar 2026 20:25:05 +0000 (20:25 +0000)] 
udev: ensure tag parsing stays within bounds

This cannot actually happen, but add a safety check nonetheless.

Reported on yeswehack.com as:
YWH-PGM9780-43

Follow-up for d7867b31836173d1a943ecb1cab6484536126411

4 weeks agoudev: ensure there is space for trailing NUL before calling sprintf
Luca Boccassi [Fri, 6 Mar 2026 19:42:16 +0000 (19:42 +0000)] 
udev: ensure there is space for trailing NUL before calling sprintf

sprintf will write 5 characters, as it adds a trailing NUL byte.

Reported on yeswehack.com as:
YWH-PGM9780-62

Follow-up for 8cfcf9980a3

4 weeks agoudev: check for invalid chars in various fields received from the kernel
Luca Boccassi [Fri, 6 Mar 2026 19:32:35 +0000 (19:32 +0000)] 
udev: check for invalid chars in various fields received from the kernel

4 weeks agosd-device: refuse properties with invalid characters (#41001)
Zbigniew Jędrzejewski-Szmek [Tue, 10 Mar 2026 21:19:32 +0000 (22:19 +0100)] 
sd-device: refuse properties with invalid characters (#41001)

4 weeks agoci: Add one more mcp tool to claude-review workflow
Daan De Meyer [Tue, 10 Mar 2026 20:35:13 +0000 (21:35 +0100)] 
ci: Add one more mcp tool to claude-review workflow

4 weeks agoci: Only trigger claude review workflow on pr comments
Daan De Meyer [Tue, 10 Mar 2026 19:55:40 +0000 (20:55 +0100)] 
ci: Only trigger claude review workflow on pr comments

The trigger for regular pr and issue comments is the same, so we
have to make sure we skip if it's an issue comment and not a pr
comment.

4 weeks agoci: Update prompt to include a list of errors
Daan De Meyer [Tue, 10 Mar 2026 19:43:22 +0000 (20:43 +0100)] 
ci: Update prompt to include a list of errors

To make debugging the review workflow easier, have claude include an
overview of errors encountered in the review summary.

4 weeks agoci: Give claude review read-only access to issues and pull requests
Daan De Meyer [Tue, 10 Mar 2026 19:39:56 +0000 (20:39 +0100)] 
ci: Give claude review read-only access to issues and pull requests

For retrieving previous review comments and extra details from issues
linked in the PR.

4 weeks agoci: Create claude review tracking comment before starting review
Daan De Meyer [Tue, 10 Mar 2026 19:19:41 +0000 (20:19 +0100)] 
ci: Create claude review tracking comment before starting review

Let's create a comment to let the user know that the review is in
progress and then update that comment with the actual review later.

4 weeks agoVarious claude fixes (#41024)
Daan De Meyer [Tue, 10 Mar 2026 19:03:02 +0000 (20:03 +0100)] 
Various claude fixes (#41024)

4 weeks agoci: Add workflow url to tracking comment in claude-review workflow 41024/head
Daan De Meyer [Tue, 10 Mar 2026 18:58:17 +0000 (19:58 +0100)] 
ci: Add workflow url to tracking comment in claude-review workflow

Simplifies debugging of failed claude-review workflows.

4 weeks agoci: Don't make a single failed review comment fail the entire job
Daan De Meyer [Tue, 10 Mar 2026 18:57:11 +0000 (19:57 +0100)] 
ci: Don't make a single failed review comment fail the entire job

Let's handle failure to post individual review comments gracefully.
Reduces the impact of failures like in
https://github.com/systemd/systemd/actions/runs/22904601370/job/66461528144.

4 weeks agoci: Update claude review prompt to insist on valid lines
Daan De Meyer [Tue, 10 Mar 2026 18:56:09 +0000 (19:56 +0100)] 
ci: Update claude review prompt to insist on valid lines

Hopefully fixes the failure in
https://github.com/systemd/systemd/actions/runs/22904601370/job/66461528144.

4 weeks agomount-util: Use new mount API in bind_mount_submounts() (#41008)
Daan De Meyer [Tue, 10 Mar 2026 18:49:10 +0000 (19:49 +0100)] 
mount-util: Use new mount API in bind_mount_submounts() (#41008)

4 weeks agocore/cgroup: fix TasksMaxScale percentage serialization (#41011)
Cyrus Xi [Tue, 10 Mar 2026 18:36:21 +0000 (11:36 -0700)] 
core/cgroup: fix TasksMaxScale percentage serialization (#41011)

bus_cgroup_set_tasks_max_scale() used a hand-rolled percentage format
that produced values ~10x too small (e.g., "TasksMax=4.0%" instead of
"TasksMax=40.00%").

On daemon-reload, the incorrect value was re-read, silently reducing
the effective TasksMax by ~10x and causing fork rejections on systems
with high thread counts.

Fix by using the existing PERMYRIAD macros, consistent with memory
property handlers (MemoryMax, MemoryHigh, MemoryLow, etc.).

Fixes: #41009
4 weeks agofuzz: fix typo
Yu Watanabe [Tue, 10 Mar 2026 18:23:44 +0000 (03:23 +0900)] 
fuzz: fix typo

Follow-up for be0db50cadadb35fdbc117ed68e133f34604b97b.

4 weeks agoTranslations update from Fedora Weblate (#41021)
Luca Boccassi [Tue, 10 Mar 2026 17:55:43 +0000 (17:55 +0000)] 
Translations update from Fedora Weblate (#41021)

Translations update from [Fedora
Weblate](https://translate.fedoraproject.org) for
[systemd/main](https://translate.fedoraproject.org/projects/systemd/main/).

Current translation status:

![Weblate translation
status](https://translate.fedoraproject.org/widget/systemd/main/horizontal-auto.svg)

4 weeks agopo: Translated using Weblate (Chinese (Simplified) (zh_CN)) 41021/head
Jesse Guo [Tue, 10 Mar 2026 15:58:29 +0000 (15:58 +0000)] 
po: Translated using Weblate (Chinese (Simplified) (zh_CN))

Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Jesse Guo <jesseguotech@outlook.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/zh_CN/
Translation: systemd/main

4 weeks agopo: Translated using Weblate (Catalan)
naly zzwd [Tue, 10 Mar 2026 15:58:29 +0000 (15:58 +0000)] 
po: Translated using Weblate (Catalan)

Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: naly zzwd <xeanhort007@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/ca/
Translation: systemd/main

4 weeks agopo: Translated using Weblate (German)
Marcel Leismann [Tue, 10 Mar 2026 15:58:28 +0000 (15:58 +0000)] 
po: Translated using Weblate (German)

Currently translated at 99.6% (265 of 266 strings)

Co-authored-by: Marcel Leismann <tiixrigjekfv@use.startmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/de/
Translation: systemd/main

4 weeks agonetworkd: fix for networkd crash when client sends Option 82 via SendOption=
Nandakumar Raghavan [Tue, 10 Mar 2026 06:54:33 +0000 (06:54 +0000)] 
networkd: fix for networkd crash when client sends Option 82 via SendOption=

When a DHCP client uses SendOption=82:string:..., option_append() calls
the SD_DHCP_OPTION_RELAY_AGENT_INFORMATION case which was written for
the server relay path. It casts optval to sd_dhcp_server* and calls
strlen() on its members, but optval is actually raw binary data from
the client, causing SIGSEGV. The same is applicable when option 43 and
option 77 are passed to SendOption.

Fix by checking optlen > 0 and appending the option as a plain TLV,
skipping the server-specific relay agent logic.

4 weeks agonsresourced: downgrade benign log message to debug
Luca Boccassi [Mon, 9 Mar 2026 11:25:50 +0000 (11:25 +0000)] 
nsresourced: downgrade benign log message to debug

This is very noisy as there's a dozen of these message every
time it gets called, and it's not really an error but an
expected situation, so downgrade from info to debug

4 weeks agoupdate TODO
Lennart Poettering [Tue, 10 Mar 2026 17:16:37 +0000 (18:16 +0100)] 
update TODO

4 weeks agoNEWS: update contributors list 41023/head
Luca Boccassi [Tue, 10 Mar 2026 17:12:12 +0000 (17:12 +0000)] 
NEWS: update contributors list

4 weeks agoUpdate hwdb
Luca Boccassi [Tue, 10 Mar 2026 17:04:22 +0000 (17:04 +0000)] 
Update hwdb

ninja -C build update-hwdb

4 weeks agomkosi: update debian commit reference to 56e0eed69a4782eb8e110650d93daebcf1ece49a
Luca Boccassi [Tue, 10 Mar 2026 15:25:47 +0000 (15:25 +0000)] 
mkosi: update debian commit reference to 56e0eed69a4782eb8e110650d93daebcf1ece49a

56e0eed69a Update changelog for 260~rc2-1 release
36e6a6d247 Install new files
692d0ffde5 Install new files for upstream build
04e77a9300 Enable getty@ via packaging scriptlets, not static anymore
65e7898ab5 Remove build-depend on rsync, meson is new enough
1ab5e82a93 Update changelog for 260~rc1-2 release
17a8004c53 sd-boot-efi: do not pick up hwids, they are shipped by sd-ukify
b620f379b3 Update changelog for 260~rc1-1 release
8eb95fc404 Drop unused Lintian overrides
82a111e7ef Update symbols file for v260~rc1
9cb8e0457b Disable remaining deprecated sysv interfaces
100d97ba82 Install new files for v260~rc1
b8e9e50f4d initramfs-tools: copy udev link files from /usr/local/lib/systemd/network too

4 weeks agonetwork: fix issue when configuring route (#41000)
Zbigniew Jędrzejewski-Szmek [Tue, 10 Mar 2026 16:14:15 +0000 (17:14 +0100)] 
network: fix issue when configuring route (#41000)

Fixes #40106.

4 weeks agopcrlock: minor tweaks (#41018)
Lennart Poettering [Tue, 10 Mar 2026 15:47:18 +0000 (16:47 +0100)] 
pcrlock: minor tweaks (#41018)

4 weeks agoTwo claude improvements (#41019)
Luca Boccassi [Tue, 10 Mar 2026 15:40:55 +0000 (15:40 +0000)] 
Two claude improvements (#41019)

4 weeks agoci: Use one more variable in claude-review workflow 41019/head
Daan De Meyer [Tue, 10 Mar 2026 13:40:00 +0000 (14:40 +0100)] 
ci: Use one more variable in claude-review workflow

4 weeks agopcrlock: add .pcrlock file for recently added NvPCR separator 41018/head
Lennart Poettering [Tue, 10 Mar 2026 10:54:17 +0000 (11:54 +0100)] 
pcrlock: add .pcrlock file for recently added NvPCR separator

Follow-up for: 867e64737a1761e313c371abfb43ab2c04b9e568

4 weeks agopcrlock: do not pass wrong error to log message
Lennart Poettering [Tue, 10 Mar 2026 10:54:54 +0000 (11:54 +0100)] 
pcrlock: do not pass wrong error to log message

4 weeks agopcrlock: add an extra assert()
Lennart Poettering [Tue, 10 Mar 2026 07:10:06 +0000 (08:10 +0100)] 
pcrlock: add an extra assert()

4 weeks agoci: Use github MCP in claude review instead of gh command line tool
Daan De Meyer [Tue, 10 Mar 2026 09:58:27 +0000 (10:58 +0100)] 
ci: Use github MCP in claude review instead of gh command line tool

MCP was specifically made for AI and is available, so we might as well
use it.

4 weeks agosemaphore: use Ubuntu 24.04
Yu Watanabe [Tue, 10 Mar 2026 00:18:48 +0000 (09:18 +0900)] 
semaphore: use Ubuntu 24.04

Semaphore CI/CD now emits the following error.
```
OS image 'ubuntu2004' for machine type 'e1-standard-2' is currently in a brownout phase.
Please use another OS image.
```
Let's use newer image.

4 weeks agoudev: improve log message in udev_builtin_add_property() 41001/head
Yu Watanabe [Mon, 9 Mar 2026 04:50:27 +0000 (13:50 +0900)] 
udev: improve log message in udev_builtin_add_property()

4 weeks agosd-device: refuse spurious properties
Yu Watanabe [Mon, 9 Mar 2026 04:24:03 +0000 (13:24 +0900)] 
sd-device: refuse spurious properties

Properties are set through uevent, udev rules, or program output by IMPORT.
They may contain spurious characters and udev database parsers may be confused.
Let's refuse spurious properties.

4 weeks agomount: honor --timeout-idle-sec=SEC option (#41010)
ppkramer-hub [Mon, 9 Mar 2026 19:31:53 +0000 (20:31 +0100)] 
mount: honor --timeout-idle-sec=SEC option (#41010)

When using systemd-mount to create a transient .mount/.automount file
for removable storage, the option to specify the idle timeout on the
commandline using **--timeout-idle-sec=SEC** is not reflected in the
generated .automount file. Instead, the idle timeout is always set to 1
second.

arg_timeout_idle_set was never set to true when passing the argument, so
arg_timeout_idle was always set to 1s.

Fixes #41007.

Co-authored-by: patrick <patrick@localhost>
4 weeks agosd-device: do not register a property with an empty string
Yu Watanabe [Mon, 9 Mar 2026 18:33:10 +0000 (03:33 +0900)] 
sd-device: do not register a property with an empty string

The function device_add_property() handles property with NULL value as
removing the property. Let's also make an empty value is handled as
same.

Note, ENV{hoge}=="" udev property handles both NULL value and an empty string
in the same way.

4 weeks agosd-device: use device_add_property() at one more place
Yu Watanabe [Mon, 9 Mar 2026 04:30:02 +0000 (13:30 +0900)] 
sd-device: use device_add_property() at one more place

4 weeks agoci: Drop tracking comment update from claude review
Daan De Meyer [Mon, 9 Mar 2026 16:55:33 +0000 (17:55 +0100)] 
ci: Drop tracking comment update from claude review

Too noisy, let's drop it.

4 weeks agomount-util: Use new mount API in bind_mount_submounts() 41008/head
Daan De Meyer [Mon, 9 Mar 2026 15:25:05 +0000 (16:25 +0100)] 
mount-util: Use new mount API in bind_mount_submounts()

4 weeks agoAGENTS.md: Tell agents to use mkosi box for running commands
Daan De Meyer [Mon, 9 Mar 2026 15:24:20 +0000 (16:24 +0100)] 
AGENTS.md: Tell agents to use mkosi box for running commands

mkosi box will run in the tools tree if there is one which is guaranteed
to contain basic tools.

4 weeks agoci: Two claude fixes (#41004)
Daan De Meyer [Mon, 9 Mar 2026 11:05:27 +0000 (12:05 +0100)] 
ci: Two claude fixes (#41004)

4 weeks agoci: Update claude action to v1 commit 41004/head
Daan De Meyer [Mon, 9 Mar 2026 10:12:21 +0000 (11:12 +0100)] 
ci: Update claude action to v1 commit

I accidentally picked a random commit instead of the one pointing
to the official v1 release, let's fix that.

4 weeks agoci: Don't cancel in progress jobs for claude-review workflow
Daan De Meyer [Mon, 9 Mar 2026 09:33:20 +0000 (10:33 +0100)] 
ci: Don't cancel in progress jobs for claude-review workflow

This workflow runs on any comment to a github PR. 99% of the time the
workflow will be skipped yet it will still cancel any previous ongoing
workflows. Let's not cancel in progress workflow but instead queue the
workflow so we don't cancel in progress reviews any time a comment is
posted on a PR that is being reviewed.

4 weeks agoci: privilege-separate Claude review workflow
Daan De Meyer [Fri, 6 Mar 2026 14:58:06 +0000 (15:58 +0100)] 
ci: privilege-separate Claude review workflow

The workflow is split into two jobs for least-privilege:

1. 'review' job — runs Claude with read-only permissions (contents: read,
   id-token: write for AWS OIDC, actions: read). Claude produces a structured
   JSON review via --json-schema with a 'comments' array and a 'summary'
   string. Its tools are restricted to read-only operations (Read, LS, Grep,
   Glob, Task, and various Bash prefixes for common read-only commands).
   Claude also has access to CI MCP tools to analyze failed workflow runs.

2. 'post' job — only has pull-requests: write. Reads the structured JSON
   output from the review job and posts inline comments individually (so
   re-runs only add new comments). Maintains a tracking comment with a
   <!-- claude-pr-review --> marker that is created on first run and updated
   in-place on subsequent runs, preserving existing item order, wording,
   and checkbox state. Posts a notification comment when the tracking
   comment is updated or left unchanged.

Comment deduplication is handled by Claude in the prompt rather than in
the posting script, allowing for better semantic understanding of whether
two comments address the same issue.

The PR number is resolved via github.event.pull_request.number with a
fallback to github.event.issue.number for issue_comment events where
github.event.pull_request is not populated. The concurrency group uses
the same fallback.

Co-developed-by: Claude <claude@anthropic.com>
4 weeks agotest-network: add test case for issue #40106 41000/head
Yu Watanabe [Mon, 9 Mar 2026 03:31:41 +0000 (12:31 +0900)] 
test-network: add test case for issue #40106

4 weeks agonetwork: route bound to a link requires the link is up
Yu Watanabe [Mon, 9 Mar 2026 02:46:01 +0000 (11:46 +0900)] 
network: route bound to a link requires the link is up

We checked if the link is up only when configuring (explicit) nexthop,
but we did not checked that when configuring route which has (implicit)
nexthop.

Let's move the checks from nexthop_is_ready_to_configure() to
gateway_is_ready(), which is called for both implicit and explict
nexthops.

Fixes #40106.

4 weeks agonetwork: check if gateway is ready only when the nexthop is bound to link
Yu Watanabe [Mon, 9 Mar 2026 02:30:54 +0000 (11:30 +0900)] 
network: check if gateway is ready only when the nexthop is bound to link

Currently, we support three types of nexthop:
1. simple nexthop, which is bound to link, may have specific gateway
   address,
2. blackhole nexthop, which is global configuration and is not bound to
   any links,
3. group nexthop, which is also global configuration and is not bound to
   any links.

Thus, gateway_is_ready() is only necessary to call for simple nexthop
case. Let's make the logic simpler.

4 weeks agonetwork: introduce link_is_up() helper function
Yu Watanabe [Mon, 9 Mar 2026 01:57:06 +0000 (10:57 +0900)] 
network: introduce link_is_up() helper function

4 weeks agoman: fix SendHostname= and Hostname= descriptions to allow multi-label DNS names...
Malcolm Frazier [Sun, 8 Mar 2026 02:18:56 +0000 (18:18 -0800)] 
man: fix SendHostname= and Hostname= descriptions to allow multi-label DNS names in [DHCPv4]

4 weeks agoShorten format-table code and fix potential memleak (#40917)
Yu Watanabe [Mon, 9 Mar 2026 00:26:30 +0000 (09:26 +0900)] 
Shorten format-table code and fix potential memleak (#40917)

4 weeks agopo: Translated using Weblate (Slovenian)
Martin Srebotnjak [Sun, 8 Mar 2026 23:58:27 +0000 (23:58 +0000)] 
po: Translated using Weblate (Slovenian)

Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Martin Srebotnjak <miles@filmsi.net>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/sl/
Translation: systemd/main

4 weeks agohwdb: update HP Envy x360 patterns to cover newer 14-fc0xxx models
Andrii Zora [Sat, 7 Mar 2026 15:24:28 +0000 (17:24 +0200)] 
hwdb: update HP Envy x360 patterns to cover newer 14-fc0xxx models

Signed-off-by: Andrii Zora <anaxarsys@gmail.com>
4 weeks agohwdb: sensor: bncf reformat match
David Santamaría Rogado [Sun, 8 Mar 2026 02:45:10 +0000 (03:45 +0100)] 
hwdb: sensor: bncf reformat match

4 weeks agoFix media keys for Lenovo ThinkBook 14 2-in-1 G5 IAU
The-An0nym [Sat, 7 Mar 2026 08:41:00 +0000 (09:41 +0100)] 
Fix media keys for Lenovo ThinkBook 14 2-in-1 G5 IAU

4 weeks agohwdb: map Xiaomi Mi Notebook Pro star key to KEY_MACRO
Arjun-C-S [Sat, 7 Mar 2026 13:00:46 +0000 (18:30 +0530)] 
hwdb: map Xiaomi Mi Notebook Pro star key to KEY_MACRO

The Xiaomi Mi Notebook Pro keyboard has a "star" key that
generates AT keyboard scancode 0x72 but is not mapped in
the default hwdb.

Map it to KEY_MACRO so it appears as a usable input key.

Verified using evtest.

Signed-off-by: Arjun <arjunchoozhi1234@gmail.com>
5 weeks agouser-record: fix segfault when processing matchHostname field (#40979)
Zbigniew Jędrzejewski-Szmek [Sat, 7 Mar 2026 15:22:02 +0000 (16:22 +0100)] 
user-record: fix segfault when processing matchHostname field (#40979)

Fix a typo which causes a segfault when processing a user record
with `matchHostname` when it's an array instead of a simple string:

```
$ echo '{"userName":"crashhostarray","perMachine":[{"matchHostname":["host1","host2"],"locked":false}]}' | userdbctl -F -
Segmentation fault         (core dumped)

$ coredumpctl info
...
       Message: Process 1172301 (userdbctl) of user 1000 dumped core.

                Module libz.so.1 from rpm zlib-ng-2.3.3-1.fc43.x86_64
                Module libcrypto.so.3 from rpm openssl-3.5.4-2.fc43.x86_64
                Stack trace of thread 1172301:
                #0  0x00007fded7b3a656 __strcmp_evex (libc.so.6 + 0x159656)
                #1  0x00007fded7e95397 per_machine_hostname_match (libsystemd-shared-260.so + 0x295397)
                #2  0x00007fded7e955b5 per_machine_match (libsystemd-shared-260.so + 0x2955b5)
                #3  0x00007fded7e957c6 dispatch_per_machine (libsystemd-shared-260.so + 0x2957c6)
                #4  0x00007fded7e96c97 user_record_load (libsystemd-shared-260.so + 0x296c97)
                #5  0x000000000040572d display_user (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x572d)
                #6  0x00007fded7ea9727 dispatch_verb (libsystemd-shared-260.so + 0x2a9727)
                #7  0x000000000041077c run (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x1077c)
                #8  0x00000000004107ce main (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x107ce)
                #9  0x00007fded79e45b5 __libc_start_call_main (libc.so.6 + 0x35b5)
                #10 0x00007fded79e4668 __libc_start_main@@GLIBC_2.34 (libc.so.6 + 0x3668)
                #11 0x00000000004038d5 _start (/home/fsumsal/repos/@systemd/systemd/build/userdbctl + 0x38d5)
                ELF object binary architecture: AMD x86-64
```

5 weeks agoTranslations update from Fedora Weblate (#40984)
Luca Boccassi [Sat, 7 Mar 2026 10:55:42 +0000 (10:55 +0000)] 
Translations update from Fedora Weblate (#40984)

Translations update from [Fedora
Weblate](https://translate.fedoraproject.org) for
[systemd/main](https://translate.fedoraproject.org/projects/systemd/main/).

Current translation status:

![Weblate translation
status](https://translate.fedoraproject.org/widget/systemd/main/horizontal-auto.svg)

5 weeks agopo: Translated using Weblate (Turkish) 40984/head
Oğuz Ersen [Sat, 7 Mar 2026 01:58:37 +0000 (01:58 +0000)] 
po: Translated using Weblate (Turkish)

Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Oğuz Ersen <oguz@ersen.moe>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/tr/
Translation: systemd/main

5 weeks agopo: Translated using Weblate (Swedish)
Daniel Nylander [Sat, 7 Mar 2026 01:58:36 +0000 (01:58 +0000)] 
po: Translated using Weblate (Swedish)

Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: Daniel Nylander <po@danielnylander.se>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/sv/
Translation: systemd/main

5 weeks agopo: Translated using Weblate (Kazakh)
Baurzhan Muftakhidinov [Sat, 7 Mar 2026 01:58:36 +0000 (01:58 +0000)] 
po: Translated using Weblate (Kazakh)

Currently translated at 100.0% (266 of 266 strings)

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

5 weeks agopo: Translated using Weblate (Korean)
김인수 [Sat, 7 Mar 2026 01:58:35 +0000 (01:58 +0000)] 
po: Translated using Weblate (Korean)

Currently translated at 100.0% (266 of 266 strings)

Co-authored-by: 김인수 <simmon@nplob.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/ko/
Translation: systemd/main