]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
4 weeks agoclang-tidy: Enable more warnings 39910/head
Daan De Meyer [Fri, 21 Nov 2025 08:26:32 +0000 (09:26 +0100)] 
clang-tidy: Enable more warnings

4 weeks agolinter: Remove unneeded meson options
Daan De Meyer [Sun, 14 Dec 2025 15:48:25 +0000 (16:48 +0100)] 
linter: Remove unneeded meson options

Now that clang-tidy passes regardless of whether
these options are enabled or not, let's stop
configuring them explicitly

4 weeks agoci: Add coverage for -Dcompat-mutable-uid-boundaries=true
Daan De Meyer [Mon, 15 Dec 2025 08:30:44 +0000 (09:30 +0100)] 
ci: Add coverage for -Dcompat-mutable-uid-boundaries=true

4 weeks agolocale: Gate conditional includes behind ifdef
Daan De Meyer [Sun, 14 Dec 2025 15:46:09 +0000 (16:46 +0100)] 
locale: Gate conditional includes behind ifdef

Let's make sure clang-tidy doesn't complain on
distributions without locale-gen.

4 weeks agobasic: Gate conditional includes behind ifdef
Daan De Meyer [Sun, 14 Dec 2025 15:44:48 +0000 (16:44 +0100)] 
basic: Gate conditional includes behind ifdef

4 weeks agolibudev: Fix declaration argument names
Daan De Meyer [Sun, 14 Dec 2025 15:39:49 +0000 (16:39 +0100)] 
libudev: Fix declaration argument names

Make sure these match the definition argument names.

4 weeks agosd-netlink: Use same argument name for rtnl definitions
Daan De Meyer [Sun, 14 Dec 2025 15:07:58 +0000 (16:07 +0100)] 
sd-netlink: Use same argument name for rtnl definitions

We already have the same argument name as used in the
declarations available, let's use it so the declarations
and definitions match.

4 weeks agosd-json: Fix sd_json_variant_type_to_string parameter name
Daan De Meyer [Sun, 14 Dec 2025 15:04:57 +0000 (16:04 +0100)] 
sd-json: Fix sd_json_variant_type_to_string parameter name

The definition will use i because of the macro, so
let's use i in the declaration as well. We can't
use DECLARE_STRING_TABLE_LOOKUP_TO_STRING() because
sd-json.h is a libsystemd public header.

4 weeks agosystemctl-daemon-reload: Add missing parameter name
Daan De Meyer [Sun, 14 Dec 2025 14:48:18 +0000 (15:48 +0100)] 
systemctl-daemon-reload: Add missing parameter name

4 weeks agoclang-tidy: Block system headers with errors
Daan De Meyer [Wed, 26 Nov 2025 14:52:46 +0000 (15:52 +0100)] 
clang-tidy: Block system headers with errors

blkid.h and gmessages.h both use const for arguments that are passed
by value, which is pointless and triggers clang-tidy warnings, so exclude
them from processing.

4 weeks agotree-wide: Various coding style cleanups
Daan De Meyer [Wed, 26 Nov 2025 14:21:09 +0000 (15:21 +0100)] 
tree-wide: Various coding style cleanups

4 weeks agosd-journal: Fix return value coding style
Daan De Meyer [Wed, 26 Nov 2025 10:56:11 +0000 (11:56 +0100)] 
sd-journal: Fix return value coding style

Let's always use ret, ret_data and ret_size for output arguments.

size is better than length in this case because we're dealing with
arbitrary, possibly binary, data and not strings.

4 weeks agosd-journal: Remove const from function parameter
Daan De Meyer [Mon, 15 Dec 2025 08:08:00 +0000 (09:08 +0100)] 
sd-journal: Remove const from function parameter

boot_id is already passed by value, and hence copied.
Since we don't apply const to function parameters
that are copied anywhere else, let's drop the const
here as well for consistency.

4 weeks agotree-wide: Drop NOLINTNEXTLINE comments
DaanDeMeyer [Thu, 1 Jan 2026 20:01:39 +0000 (21:01 +0100)] 
tree-wide: Drop NOLINTNEXTLINE comments

Not needed anymore after recent refactoring.

4 weeks agotree-wide: Use pamh as pam_handle_t parameter name
Daan De Meyer [Fri, 19 Dec 2025 18:43:21 +0000 (19:43 +0100)] 
tree-wide: Use pamh as pam_handle_t parameter name

libpam uses pamh in its function declarations for
the plugin API so let's use the same name in our
tree as well.

Making sure the plugin function definitions match
the plugin function declarations is required to
enable clang-tidy's
readability-inconsistent-declaration-parameter-name
check, but to keep things consistent everywhere we
opt to use pamh tree-wide.

4 weeks agotools: drop unnecessary sys/capability.h header
Yu Watanabe [Thu, 1 Jan 2026 21:20:17 +0000 (06:20 +0900)] 
tools: drop unnecessary sys/capability.h header

After 9b414a38fadb41c9ea056ed5d284ab5098251a37 (#39425), the header is
not required. And after b295c166f94526aae830893612a1584840f2f087, the
header is not installed in CI environments.

4 weeks agotools: show each command to make it easier to debug
Yu Watanabe [Thu, 1 Jan 2026 21:09:39 +0000 (06:09 +0900)] 
tools: show each command to make it easier to debug

4 weeks agotools: allow to run setup-musl-build.sh for already set up directory
Yu Watanabe [Thu, 1 Jan 2026 21:03:27 +0000 (06:03 +0900)] 
tools: allow to run setup-musl-build.sh for already set up directory

4 weeks agoRequire libxcrypt >= 4.4.0 and drop libcrypt support (#38974)
Yu Watanabe [Fri, 2 Jan 2026 05:32:12 +0000 (14:32 +0900)] 
Require libxcrypt >= 4.4.0 and drop libcrypt support (#38974)

This drops support of libcrypt provided by glibc, and always use
libxcrypt.
This also makes libxcrypt dlopen() dependency.

4 weeks agolibcrypt-util: turn into dlopen() dependency 38974/head
Yu Watanabe [Sat, 25 Oct 2025 04:41:33 +0000 (13:41 +0900)] 
libcrypt-util: turn into dlopen() dependency

Note, this drops logging only test case for crypt_preferred_method(),
as that requires explicitly dlopen() the library. But, we should test
that make_salt() and friends automatically dlopen() it.

4 weeks agolibcrypt: allow to build systemd without libcrypt/libxcrypt
Yu Watanabe [Sat, 25 Oct 2025 05:59:54 +0000 (14:59 +0900)] 
libcrypt: allow to build systemd without libcrypt/libxcrypt

libcrypt is only used by firstboot, homed, and sysusers, which can be
disabled by meson option.
Let's not require the library unconditionally.

4 weeks agoRequire libxcrypt-4.4.0 or newer and drop support of libcrypt
Yu Watanabe [Sun, 17 Aug 2025 14:03:44 +0000 (23:03 +0900)] 
Require libxcrypt-4.4.0 or newer and drop support of libcrypt

libcrypt was no longer built by default since glibc-2.38, and it has been
completely removed since glibc-2.39.

Let's always use libxcrypt, unless when building with musl. As already
major distribution already have libxcrypt-4.4.x, hence let's also bump
the required minimum version to 4.4.0.

libxcrypt cannot be built with musl, hence the previous fallback logic
in libcrypt-util.c are moved to musl/crypt.c.

Note, libxcrypt-4.4.0 was released on 2018-11-20.
See also #38608.

4 weeks agoBump required minimum version of libseccomp to 2.4.0
Yu Watanabe [Sun, 17 Aug 2025 15:58:56 +0000 (00:58 +0900)] 
Bump required minimum version of libseccomp to 2.4.0

Major distributions already have libseccomp 2.5.x or newer.
Let's bump to the required minimum version to 2.4.0, which provides
SCMP_ACT_KILL_PROCESS, SCMP_ACT_LOG, SCMP_ARCH_PARISC, and
SCMP_ARCH_PARISC64.

Note, libseccomp 2.4.0 was released on 2019-03-15.

See also #38608.

4 weeks agotest-libcrypt-util: use DEFINE_TEST_MAIN() and ASSERT_XYZ()
Yu Watanabe [Sun, 17 Aug 2025 15:13:27 +0000 (00:13 +0900)] 
test-libcrypt-util: use DEFINE_TEST_MAIN() and ASSERT_XYZ()

Also, tests for make_salt() in test-user-util.c are moved to
test-libcrypt-util.c.

4 weeks agolibcrypt-util: add missing assertions
Yu Watanabe [Tue, 18 Nov 2025 01:28:50 +0000 (10:28 +0900)] 
libcrypt-util: add missing assertions

4 weeks agolibcrypt-util: drop unused hash_passwrod_full()
Yu Watanabe [Tue, 18 Nov 2025 00:52:37 +0000 (09:52 +0900)] 
libcrypt-util: drop unused hash_passwrod_full()

It is only used by test cases. Not necessary to keep it.

4 weeks agolibcrypt-util: move looks_like_hashed_password()
Yu Watanabe [Tue, 18 Nov 2025 00:27:14 +0000 (09:27 +0900)] 
libcrypt-util: move looks_like_hashed_password()

No functional change, just preparation for later change.

4 weeks agoBump required minimum version of cryptsetup to 2.4.0
Yu Watanabe [Sun, 17 Aug 2025 12:22:16 +0000 (21:22 +0900)] 
Bump required minimum version of cryptsetup to 2.4.0

Major distributions already have cryptsetup newer than 2.4.0.
Let's bump the minimal required version.

Note, cryptsetup 2.4.0 was released on 2021-08-18.

See also #38608.

4 weeks agoBump required minimum version of elfutils to 0.177
Yu Watanabe [Sun, 17 Aug 2025 13:19:50 +0000 (22:19 +0900)] 
Bump required minimum version of elfutils to 0.177

Major distributions already have elfutils >= 0.190.
Let's bump the required minimum version.

Note, elfutils 0.177 was released on 2019-08-14.

See also #38608.

4 weeks agoBump required minimum version of blkid to 2.37
Yu Watanabe [Sun, 17 Aug 2025 13:05:53 +0000 (22:05 +0900)] 
Bump required minimum version of blkid to 2.37

Major distributions already have blkid >= 2.37.
Let's bump the minimal required version.

Note, util-linux (which provides blkid) 2.37 was released on 2021-06-01.

See also #38608.

4 weeks agoBump required minimum version of OpenSSL to 3.0.0
Yu Watanabe [Sun, 17 Aug 2025 12:41:22 +0000 (21:41 +0900)] 
Bump required minimum version of OpenSSL to 3.0.0

All major distributions have switched to OpenSSL version 3.x.
Let's drop support of OpenSSL version 1.x.

Note, OpenSSL 3.0 was released on 2021-09-07 (and will be EOL on 2026-09-07).

See also #38608.

4 weeks agoman: drop redundant 'and'
Yu Watanabe [Fri, 2 Jan 2026 00:52:28 +0000 (09:52 +0900)] 
man: drop redundant 'and'

Also swap the order of entries, to make it consistent for other unit
types.

Follow-up for 79dd24cf14adc809620479d45a7b469cf3e82892.

4 weeks agoEnable systemd-coredump for offline updates
Adam Williamson [Mon, 17 Nov 2025 22:35:11 +0000 (14:35 -0800)] 
Enable systemd-coredump for offline updates

If a crash occurs during an offline update, we do not get a
coredump, because systemd-coredump is not enabled. This of course
complicates debugging.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
4 weeks agonetwork: Support interface-bound ECMP routes in MultiPathRoute= (#39742)
Yu Watanabe [Fri, 2 Jan 2026 00:25:43 +0000 (09:25 +0900)] 
network: Support interface-bound ECMP routes in MultiPathRoute= (#39742)

MultiPathRoute= can now specify device-only nexthops without a gateway
address, e.g. MultiPathRoute=@wg0. This enables ECMP configurations over
interfaces that don't use gateway addresses, such as WireGuard tunnels.

The syntax is extended from "address[@device] [weight]" to
"[address]@device [weight]". The address is now optional, but at least
one of gateway or device must be specified. The @ symbol must still be
present for device-only routes, making the syntax unambiguous: @wg0
specifies a device, while a bare IP address specifies a gateway.

Device-only nexthops are only available for IPv4 routes. Device-only
multipath routes for IPv6 are not supported by the kernel's netlink
interface and will be rejected with a warning.

This change is fully backwards compatible. All existing configurations
continue to work unchanged, as they always included a gateway address.

Closes #39699.

4 weeks agovmspawn: Add --user/--system and support user session machined registration
Daan De Meyer [Mon, 22 Dec 2025 14:11:18 +0000 (15:11 +0100)] 
vmspawn: Add --user/--system and support user session machined registration

The UX of registering with the user session machined
instance is much better as there won't be an authorization
prompt. To make that available for users, let's add --user
and --system switches for vmspawn. For backwards compat, we'll
still try to register with the system machined instance if the
user machined instance is not available.

4 weeks agodocs: update password agent document (#40235)
Yu Watanabe [Thu, 1 Jan 2026 23:03:37 +0000 (08:03 +0900)] 
docs: update password agent document (#40235)

Adding some missing information from the code to the docs.

4 weeks agoudev,sysupdated: fix pidfd leak
Mike Yuan [Thu, 1 Jan 2026 19:10:45 +0000 (20:10 +0100)] 
udev,sysupdated: fix pidfd leak

Follow-up for 179dcf924f7d0ac9398f54baeb39b47abd23aeaf

After the mentioned commit, event_add_child_pidref() duplicates
the pidfd internally, hence the original pidfd would be leaked
with TAKE_PIDREF.

4 weeks agounit-def: Clean up whitespace
DaanDeMeyer [Thu, 1 Jan 2026 19:38:25 +0000 (20:38 +0100)] 
unit-def: Clean up whitespace

4 weeks agoopenssl-util: Make ret_user_interface required output argument
DaanDeMeyer [Thu, 25 Dec 2025 18:24:17 +0000 (19:24 +0100)] 
openssl-util: Make ret_user_interface required output argument

To avoid the argument accidentally not getting passed anymore during
refactoring, let's make it a required output argument so that callers
are required to provide it.

See 11f47cb70014894a9f09c730ee7aedcac89cf73e and
875b568f56e3a8a23edd9f20463c9019ec098900.

4 weeks agodissect-image: fix typo
Yu Watanabe [Thu, 1 Jan 2026 19:32:44 +0000 (04:32 +0900)] 
dissect-image: fix typo

Follow-up for 771085291dab707b2c7502420b81f7890aa61213.

4 weeks agossh-proxy: fix typo
Yu Watanabe [Thu, 1 Jan 2026 19:30:55 +0000 (04:30 +0900)] 
ssh-proxy: fix typo

Follow-up for dc3e544104218052664e2c6b08d1ae397e9a4faf.

4 weeks agocore/dynamic-user: drop unused /run/systemd/dynamic-uid/direct: kludge
Mike Yuan [Wed, 31 Dec 2025 20:22:46 +0000 (21:22 +0100)] 
core/dynamic-user: drop unused /run/systemd/dynamic-uid/direct: kludge

Follow-up for 1684c56f40f020e685e70b3d1785d596ff16f892
This effectively reverts fd63e712b2025d235ce4bfbb512fada10e2690b5

This was originally introduced to resolve deadlock caused by
dbus broker calling into nss-systemd which in turn goes via
dbus for user lookup. This is now handled differently and
the interface has been sitting unused for half a decade now.
Kill it.

4 weeks agostring-table: Introduce DECLARE_STRING_TABLE_LOOKUP() and friends
Daan De Meyer [Fri, 12 Dec 2025 16:06:38 +0000 (17:06 +0100)] 
string-table: Introduce DECLARE_STRING_TABLE_LOOKUP() and friends

Let's introduce these for the following two reasons:
- Using them makes sure the parameter names match between declaration
  and definition (if both use the corresponding macros).
- They make sure developers can't forget the _const_ and _pure_
  attributes for the declarations.

This commit also includes some include sorting fixes

4 weeks agotree-wide: Introduce DECLARE_TRIVIAL_REF_UNREF_FUNC() and friends
Daan De Meyer [Sun, 14 Dec 2025 15:40:20 +0000 (16:40 +0100)] 
tree-wide: Introduce DECLARE_TRIVIAL_REF_UNREF_FUNC() and friends

4 weeks agoquirks: Re-add D330 accel_matrix as identity one (#40226)
David Santamaría Rogado [Thu, 1 Jan 2026 18:52:56 +0000 (19:52 +0100)] 
quirks: Re-add D330 accel_matrix as identity one (#40226)

When testing to correct accelerometer values I set locally the identity
matrix to override the quirk. The values were fine but removing all the
matrices give incorrect values.

The mistake was thinking that identity matrix is the default one when no
quirks are set. It is, but only when the ACPI doesn't have another one.

Set identity matrix for this device to correct accelerometer values.

Follow-up for a07b184e8ccbecafc1fce5a0cfffe87c6a497134.

4 weeks agoquirks: sensor: add info about ACPI accel_matrix
David Santamaría Rogado [Tue, 30 Dec 2025 00:24:38 +0000 (01:24 +0100)] 
quirks: sensor: add info about ACPI accel_matrix

Just inform about if an ACPI accel matrix exists, is the default one instead
the indentity matrix.

4 weeks agoudev/scsi_id: increase MAX_SERIAL_LEN from 256 to 512
tuhaowen [Wed, 31 Dec 2025 02:46:30 +0000 (10:46 +0800)] 
udev/scsi_id: increase MAX_SERIAL_LEN from 256 to 512

The current MAX_SERIAL_LEN value of 256 is insufficient for some SCSI
devices with non-standard serial number lengths. In do_scsi_page80_inquiry(),
the required buffer length is calculated as:

    len = 1 + VENDOR_LENGTH + MODEL_LENGTH + buf[3]
        = 1 + 8 + 16 + buf[3]
        = 25 + buf[3]

where buf[3] contains the serial number length reported by the device.
According to the SCSI specification, this field is an unsigned 8-bit
value, meaning it can theoretically be up to 255 bytes. This results
in a maximum required length of 280 bytes, exceeding the current limit
of 256 bytes.

When this occurs, scsi_id fails with an error message like:
    "length 256 too short - need 280"

This has been observed with certain vendor devices that report unusually
long serial numbers in VPD page 0x80.

Increase MAX_SERIAL_LEN to 512 to accommodate the maximum possible
serial number length plus all required prefixes (vendor, model, and
type identifiers), providing sufficient headroom for non-compliant
devices while maintaining reasonable memory usage.

Signed-off-by: tuhaowen <tuhaowen@uniontech.com>
4 weeks agobuild(deps): bump meson from 1.9.1 to 1.10.0 in /.github/workflows
dependabot[bot] [Thu, 1 Jan 2026 09:01:21 +0000 (09:01 +0000)] 
build(deps): bump meson from 1.9.1 to 1.10.0 in /.github/workflows

Bumps [meson](https://github.com/mesonbuild/meson) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/mesonbuild/meson/releases)
- [Commits](https://github.com/mesonbuild/meson/compare/1.9.1...1.10.0)

---
updated-dependencies:
- dependency-name: meson
  dependency-version: 1.10.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
4 weeks agobuild(deps): bump actions/labeler from 5.0.0 to 6.0.1
dependabot[bot] [Thu, 1 Jan 2026 09:01:00 +0000 (09:01 +0000)] 
build(deps): bump actions/labeler from 5.0.0 to 6.0.1

Bumps [actions/labeler](https://github.com/actions/labeler) from 5.0.0 to 6.0.1.
- [Release notes](https://github.com/actions/labeler/releases)
- [Commits](https://github.com/actions/labeler/compare/8558fd74291d67161a8a78ce36a881fa63b766a9...634933edcd8ababfe52f92936142cc22ac488b1b)

---
updated-dependencies:
- dependency-name: actions/labeler
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
4 weeks agobuild(deps): bump redhat-plumbers-in-action/gather-pull-request-metadata
dependabot[bot] [Thu, 1 Jan 2026 09:01:04 +0000 (09:01 +0000)] 
build(deps): bump redhat-plumbers-in-action/gather-pull-request-metadata

Bumps [redhat-plumbers-in-action/gather-pull-request-metadata](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata/releases)
- [Commits](https://github.com/redhat-plumbers-in-action/gather-pull-request-metadata/compare/5da2967931dd7c4b9ccd22f49b045e2c1f05165b...b3dbc3f843e8343dbcb2af5bffba72c974d3a07a)

---
updated-dependencies:
- dependency-name: redhat-plumbers-in-action/gather-pull-request-metadata
  dependency-version: 1.8.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
4 weeks agodocs/PASSWORD_AGENTS: document the `AcceptCached=` field 40235/head
Ben Boeckel [Wed, 31 Dec 2025 15:59:41 +0000 (10:59 -0500)] 
docs/PASSWORD_AGENTS: document the `AcceptCached=` field

4 weeks agodocs/PASSWORD_AGENTS: document the `Silent=` field
Ben Boeckel [Wed, 31 Dec 2025 15:59:25 +0000 (10:59 -0500)] 
docs/PASSWORD_AGENTS: document the `Silent=` field

4 weeks agodocs/PASSWORD_AGENTS: clarify that `Echo=0` may obscure
Ben Boeckel [Wed, 31 Dec 2025 15:58:53 +0000 (10:58 -0500)] 
docs/PASSWORD_AGENTS: clarify that `Echo=0` may obscure

4 weeks agodocs/PASSWORD_AGENTS: note that the user directory may be created
Ben Boeckel [Wed, 31 Dec 2025 15:58:26 +0000 (10:58 -0500)] 
docs/PASSWORD_AGENTS: note that the user directory may be created

4 weeks agoSupport Bash completions for short option group in journalctl (#40214)
Guiorgy [Wed, 31 Dec 2025 14:58:58 +0000 (18:58 +0400)] 
Support Bash completions for short option group in journalctl (#40214)

Currently, the Bash completions for journalctl tries to match the
previous word _**exactly**_, which leads to the following issue:
`journalctl -u dock` correctly auto completes to `journalctl -u
docker.service`, but `journalctl -eu` provides no completions at all,
which is a shame since I never use the `-u` option alone (almost always
`-eu` or `-efu`, I wish the `-e` option was the default but I digress).

The proposed solution is to assume words that start with only a single
dash and consist of only letters are short option groups and handle them
as if the previous word was the short option using the last character,
e.g. `-efu` -> `-u`.

4 weeks agoAdd Lenovo Y50-70 touchpad to 60-evdev.hwdb
kiamvdd [Fri, 26 Dec 2025 20:14:54 +0000 (21:14 +0100)] 
Add Lenovo Y50-70 touchpad to 60-evdev.hwdb

4 weeks agohwdb: touchpad config for Apple MacbookPro12,1 Early 2015
smosia [Sat, 27 Dec 2025 11:22:27 +0000 (14:22 +0300)] 
hwdb: touchpad config for Apple MacbookPro12,1 Early 2015

4 weeks agopo: Translated using Weblate (Chinese (Simplified) (zh_CN))
Zongyuan He [Wed, 31 Dec 2025 07:58:27 +0000 (07:58 +0000)] 
po: Translated using Weblate (Chinese (Simplified) (zh_CN))

Currently translated at 100.0% (264 of 264 strings)

Co-authored-by: Zongyuan He <lovenemesis@gmail.com>
Translate-URL: https://translate.fedoraproject.org/projects/systemd/main/zh_CN/
Translation: systemd/main

4 weeks agocore: several follow-ups for BindNetworkInterface= (#40202)
Daan De Meyer [Sun, 28 Dec 2025 11:55:30 +0000 (12:55 +0100)] 
core: several follow-ups for BindNetworkInterface= (#40202)

4 weeks agodocs: Add explicit reference to unprivileged userns docs of mkosi
DaanDeMeyer [Sat, 27 Dec 2025 12:21:06 +0000 (13:21 +0100)] 
docs: Add explicit reference to unprivileged userns docs of mkosi

Fixes #40216

4 weeks agobus-unit-util: BindNetworkInterface= is a cgroup property 40202/head
Mike Yuan [Wed, 24 Dec 2025 17:13:06 +0000 (18:13 +0100)] 
bus-unit-util: BindNetworkInterface= is a cgroup property

4 weeks agocore/cgroup: no need to handle empty bind_network_interface
Mike Yuan [Wed, 24 Dec 2025 18:22:07 +0000 (19:22 +0100)] 
core/cgroup: no need to handle empty bind_network_interface

We always normalize empty setting to NULL, hence per our usual
coding style a simply NULL check would suffice.

4 weeks agocore/dbus-cgroup: actually allow empty assignment for BindNetworkInterface=
Mike Yuan [Wed, 24 Dec 2025 18:21:41 +0000 (19:21 +0100)] 
core/dbus-cgroup: actually allow empty assignment for BindNetworkInterface=

4 weeks agocore/cgroup: fix bpf-bind-iface serialization
Mike Yuan [Wed, 24 Dec 2025 18:20:48 +0000 (19:20 +0100)] 
core/cgroup: fix bpf-bind-iface serialization

Follow-up for c1c787651b34c0a0f1082b9d32cf47ea3abe0af2

The commit added serialization, but deserialization wasn't in place.
Follow the usual practice of pinning the bpf link fd until we install
the new instance.

4 weeks agocore/cgroup: fix potential bpf link fd leak during deserialization
Mike Yuan [Wed, 24 Dec 2025 19:16:51 +0000 (20:16 +0100)] 
core/cgroup: fix potential bpf link fd leak during deserialization

Also add a comment explaining the deserialization mechanism, as requested
in https://github.com/systemd/systemd/pull/40202#discussion_r2649274628

4 weeks agocore/bpf-restrict-ifaces: avoid duplicate unit_get_cgroup_runtime() call
Mike Yuan [Wed, 24 Dec 2025 18:17:57 +0000 (19:17 +0100)] 
core/bpf-restrict-ifaces: avoid duplicate unit_get_cgroup_runtime() call

4 weeks agocore/cgroup: CGContext must be available if Unit has CGRuntime
Mike Yuan [Wed, 24 Dec 2025 18:15:29 +0000 (19:15 +0100)] 
core/cgroup: CGContext must be available if Unit has CGRuntime

Follow-up for e03e5056dbffffafc86e46985658e1c9075d3c74

4 weeks agonss-systemd: fix typo in comment
Tobias Stoeckmann [Sat, 27 Dec 2025 14:29:33 +0000 (15:29 +0100)] 
nss-systemd: fix typo in comment

"likely" should be "like" in this context.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
5 weeks agomkosi: update mkosi commit reference to e3642f81d3a7f8f9310c0c734b2ba9dd41e50e14
DaanDeMeyer [Fri, 26 Dec 2025 18:53:25 +0000 (19:53 +0100)] 
mkosi: update mkosi commit reference to e3642f81d3a7f8f9310c0c734b2ba9dd41e50e14

e3642f81d3 kmod: Only use --modname if available
ddea81d81e arch: Download archlinux-keyring with pacman
4a44e1831b Remove unneeded lambdas
9c3d23757c Configure pyright included files
5e037d514c qemu: Register with systemd-machined in user session
c4c3d793d0 Create package cache dir before invoking pacman
d53761c4dd distribution: do not default to release=VERSION_ID for openSUSE Tumbleweed
c5bc9138fc Wrap build_microcode_initrd in complete_step
635159975d Fix typo in manpage
59f5f0741e mkosi-addon: drop Output=addon, addon.py already has a default
be85b8ca0b sandbox: return raw error code from the kernel and friends on failure
56f25c1a41 config: replace deprecated sandbox verb with box in help message
ae24c527d7 sandbox: fix wrong errno passed to OSError()
e7b9612760 verity: do not copy signing cert in addons/portables/extensions
f3a029b736 Bump version to 27~devel
84af20892b Release 26
3fcd3a0fde Adjust logging messages for kmod/fw resolution
d44aae12b4 Revert "Do not try to install packages that are listed in RemovePackages="
1873ad0184 portable: Make sure mountpoints exist in the image
5dc693feb0 initrd: Inherit keymap, timezone, hostname and rootpw by default

5 weeks agoman: document version for BindNetworkInterface instead of using ignore list
Luca Boccassi [Wed, 24 Dec 2025 11:11:13 +0000 (11:11 +0000)] 
man: document version for BindNetworkInterface instead of using ignore list

The ignore list is for older stuff, all new interfaces must be documented
with a version.

Follow-up for c1c787651b34c0a0f1082b9d32cf47ea3abe0af2

5 weeks agobootctl-install: Fix OpenSSL UI
DaanDeMeyer [Wed, 24 Dec 2025 15:11:50 +0000 (16:11 +0100)] 
bootctl-install: Fix OpenSSL UI

Follow up for a86a366eb07294357c34122114a11ee131c25e72.

5 weeks agoterminal-util: use the right ANSI ST sequence
Lennart Poettering [Wed, 24 Dec 2025 07:00:39 +0000 (08:00 +0100)] 
terminal-util: use the right ANSI ST sequence

There are multiple ways to encode ANSI ST, and we generally prefer ESC \
for it, for reasons explained in terminal-util.h. Hence, let's actually
follow this rule in the terminal reset logic, and use the ANSI_ST macro.

This will change the byte sequence generated (as it means we use ESC \
rather than BEL), but it doesn't change behaviour, as the two sequences
should be equivalent.

5 weeks agoptyfwd: turn off O_NONBLOCK on output after soft reset
Mike Yuan [Mon, 22 Dec 2025 16:35:33 +0000 (17:35 +0100)] 
ptyfwd: turn off O_NONBLOCK on output after soft reset

Follow-up for 3d97db8f3c3e86b70d09444965ebfddd051df39c

terminal_reset_ansi_req() would try to put terminal in nonblocking
mode temporarily again, hence just avoid the back and forth
and reset nonblocking as last step.

5 weeks agoterminal-util: also send ANSI_NORMAL in terminal_reset_ansi_seq
Jörg Behrmann [Mon, 22 Dec 2025 15:58:28 +0000 (16:58 +0100)] 
terminal-util: also send ANSI_NORMAL in terminal_reset_ansi_seq

Certain terminal emulators (alacritty, ghostty and kitty) require ANSI_NORMAL
to be sent to reset the colours.

Followup for 3d97db8f3c3e86b70d09444965ebfddd051df39c.

Fixes: #40163
5 weeks agoupdate TODO
Lennart Poettering [Wed, 24 Dec 2025 06:38:28 +0000 (07:38 +0100)] 
update TODO

5 weeks agoupdate TODO
Lennart Poettering [Mon, 8 Dec 2025 13:33:59 +0000 (14:33 +0100)] 
update TODO

5 weeks agoAdd support for binding a unit to a network iface
Luiz Amaral [Tue, 23 Dec 2025 19:02:15 +0000 (20:02 +0100)] 
Add support for binding a unit to a network iface

5 weeks agorepart: Fix OpenSSL UI
DaanDeMeyer [Tue, 23 Dec 2025 16:24:01 +0000 (17:24 +0100)] 
repart: Fix OpenSSL UI

Follow up for 0158eabb01d19b6901b5c3af7d8863b73e93dc73

5 weeks agomkosi: Use initrd as exitrd
Daan De Meyer [Fri, 19 Dec 2025 14:47:01 +0000 (15:47 +0100)] 
mkosi: Use initrd as exitrd

Let's speed up image builds by avoiding building
an exitrd and instead reusing the initrd image for
the same purpose.

5 weeks agorepart: Fix --defer-partitions-empty= docs
Daan De Meyer [Sun, 21 Dec 2025 18:09:43 +0000 (19:09 +0100)] 
repart: Fix --defer-partitions-empty= docs

Fixes #40176

5 weeks agotest: fix (again) race condition in TEST-80-NOTIFYACCESS
Luca Boccassi [Thu, 18 Dec 2025 17:18:11 +0000 (17:18 +0000)] 
test: fix (again) race condition in TEST-80-NOTIFYACCESS

Even with the previous fix, it can still happen that pid1
sends SIGHUP to the script after 'sdnotify --ready' but before
'wait', so the test can still get stuck:

[ 2444.373448] reload-timeout.sh[158]: + set -o pipefail
[ 2444.373502] reload-timeout.sh[158]: + COUNTER=0
[ 2444.373590] reload-timeout.sh[158]: + trap sighup_handler SIGHUP
[ 2444.373639] reload-timeout.sh[158]: + export SYSTEMD_LOG_LEVEL=debug
[ 2444.373670] reload-timeout.sh[158]: + SYSTEMD_LOG_LEVEL=debug
[ 2444.373790] reload-timeout.sh[158]: + wait_for_signal 1
[ 2444.373871] reload-timeout.sh[158]: + local notify=1
[ 2444.373912] reload-timeout.sh[158]: + local p
[ 2444.374079] reload-timeout.sh[158]: + p=159
[ 2444.374123] reload-timeout.sh[159]: + sleep infinity
[ 2444.375358] systemd[1]: reload-timeout.service: Got notification message from PID 158: READY=1
[ 2444.375363] systemd[1]: reload-timeout.service: Changed start -> running
[ 2444.375368] systemd[1]: reload-timeout.service: Job 294 reload-timeout.service/start finished, result=done
[ 2444.375374] systemd[1]: Started reload-timeout.service.
[ 2444.375766] systemd[1]: reload-timeout.service: Failed to send unit change signal for reload-timeout.service: Connection reset by peer
[ 2444.376464] reload-timeout.sh[158]: + '[' 1 -eq 1 ']'
[ 2444.376464] reload-timeout.sh[158]: + systemd-notify --ready
[ 2444.376518] TEST-80-NOTIFYACCESS.sh[157]: Job for reload-timeout.service finished.
[ 2444.376518] TEST-80-NOTIFYACCESS.sh[157]: Got result done/Success for job reload-timeout.service.
[ 2444.376518] TEST-80-NOTIFYACCESS.sh[157]: Bus n/a: changing state RUNNING → CLOSED
[ 2444.376952] TEST-80-NOTIFYACCESS.sh[92]: + systemctl reload --no-block reload-timeout.service
[ 2444.379548] TEST-80-NOTIFYACCESS.sh[161]: Bus n/a: changing state UNSET → OPENING
[ 2444.379548] TEST-80-NOTIFYACCESS.sh[161]: sd-bus: starting bus by connecting to /run/systemd/private...
[ 2444.379548] TEST-80-NOTIFYACCESS.sh[161]: Bus n/a: changing state OPENING → AUTHENTICATING
[ 2444.379548] TEST-80-NOTIFYACCESS.sh[161]: Executing dbus call org.freedesktop.systemd1.Manager ReloadUnit(reload-timeout.service, replace)
[ 2444.379548] TEST-80-NOTIFYACCESS.sh[161]: Bus n/a: changing state AUTHENTICATING → RUNNING
[ 2444.379910] systemd-notify[160]: Notify message sent to '/run/systemd/notify': "READY=1"
[ 2444.379931] systemd-notify[160]: Notify message sent to '/run/systemd/notify': "BARRIER=1"
[ 2444.382218] systemd[1]: reload-timeout.service: Trying to enqueue job reload-timeout.service/reload/replace
[ 2444.382241] systemd[1]: reload-timeout.service: Installed new job reload-timeout.service/reload as 366
[ 2444.382248] systemd[1]: reload-timeout.service: Enqueued job reload-timeout.service/reload as 366
[ 2444.383905] systemd[1]: reload-timeout.service: Service has no extensions to reload.
[ 2444.384925] systemd[1]: reload-timeout.service: Changed running -> reload-signal
[ 2444.384935] systemd[1]: Reloading reload-timeout.service...
[ 2444.386410] reload-timeout.sh[158]: ++ sighup_handler
[ 2444.386410] reload-timeout.sh[158]: ++ echo hup1
[ 2444.386455] TEST-80-NOTIFYACCESS.sh[161]: Bus n/a: changing state RUNNING → CLOSED
[ 2444.386555] TEST-80-NOTIFYACCESS.sh[92]: + timeout 10 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "reload-signal" ]]; do sleep .5; done'
[ 2444.395566] TEST-80-NOTIFYACCESS.sh[165]: Bus n/a: changing state UNSET → OPENING
[ 2444.395566] TEST-80-NOTIFYACCESS.sh[165]: sd-bus: starting bus by connecting to /run/systemd/private...
[ 2444.396041] TEST-80-NOTIFYACCESS.sh[165]: Bus n/a: changing state OPENING → AUTHENTICATING
[ 2444.396041] TEST-80-NOTIFYACCESS.sh[165]: Showing one /org/freedesktop/systemd1/unit/reload_2dtimeout_2eservice
[ 2444.401911] TEST-80-NOTIFYACCESS.sh[165]: Bus n/a: changing state AUTHENTICATING → RUNNING
[ 2444.401911] TEST-80-NOTIFYACCESS.sh[165]: Bus n/a: changing state RUNNING → CLOSED
[ 2444.403806] TEST-80-NOTIFYACCESS.sh[92]: + sync_in hup1
[ 2444.403806] TEST-80-NOTIFYACCESS.sh[92]: + read -r x
[ 2444.403964] reload-timeout.sh[158]: + wait 159
[ 2444.403988] TEST-80-NOTIFYACCESS.sh[92]: + test hup1 = hup1
[ 2444.403988] TEST-80-NOTIFYACCESS.sh[92]: + timeout 10 bash -c 'until [[ $(systemctl show reload-timeout.service -P SubState) == "reload-notify" ]]; do sleep .5; done'

Try to check if the signal handler has ran by checking the counter,
and avoid waiting and immediately return if it has changed

Fixes https://github.com/systemd/systemd/issues/39581

Follow-up for 8fba2ed2588661c91fb3d0ee6c26b034885ee475

5 weeks agosignal-util: Use act instead of __act in comment
Daan De Meyer [Sun, 21 Dec 2025 18:14:35 +0000 (19:14 +0100)] 
signal-util: Use act instead of __act in comment

The clang-tidy check ignores trailing and
preceeding underscores, so let's just use act
instead of __act.

5 weeks agomkosi: update fedora commit reference to 67538c79f250eecbd904aa87e72a44cb3b5ef6f4
Daan De Meyer [Sat, 20 Dec 2025 14:53:32 +0000 (15:53 +0100)] 
mkosi: update fedora commit reference to 67538c79f250eecbd904aa87e72a44cb3b5ef6f4

67538c79f2 Make dbus and systemd-pam recommended dependencies
c052029197 Drop libcap-devel BuildRequires

5 weeks agoFollow ups for #39806
Daan De Meyer [Sat, 20 Dec 2025 21:10:02 +0000 (22:10 +0100)] 
Follow ups for #39806

We drop the optimization for verify_sigchld as the
check differs based on the options passed and the
extra syscalls are certainly not going to matter
compared to the cost of forking a child process.

Fixes #40166

5 weeks agopreparatory work from the OCI PR (#40149)
Lennart Poettering [Sun, 21 Dec 2025 06:38:29 +0000 (07:38 +0100)] 
preparatory work from the OCI PR (#40149)

This adds 11 commits with minor preparatory commits for PR #39621. That
PR has tests that cover all this, even if this one doesn't, but the bits
added here are relatively minor.

5 weeks agodissect-image: automatically convert O_PATH fd to proper fd in mountfsd client 40149/head
Lennart Poettering [Wed, 3 Dec 2025 08:40:22 +0000 (09:40 +0100)] 
dissect-image: automatically convert O_PATH fd to proper fd in mountfsd client

Let's make the mountfsd client code a bit easier to use, and convert an
O_PATH fd to a real one if necessary, automatically.

5 weeks agodissect-image: teach mountfsd_make_directory() the new access mode parameter
Lennart Poettering [Thu, 20 Nov 2025 12:15:27 +0000 (13:15 +0100)] 
dissect-image: teach mountfsd_make_directory() the new access mode parameter

5 weeks agomountfsd: return a better error when invalid file flags are specified on image fd
Lennart Poettering [Wed, 3 Dec 2025 08:38:50 +0000 (09:38 +0100)] 
mountfsd: return a better error when invalid file flags are specified on image fd

We already defined an error for this that we return for invalid dir fds
passed in, let's add the same niceness to the image fds.

5 weeks agomountfsd: allow O_NONBLOCK on image fds
Lennart Poettering [Wed, 3 Dec 2025 08:37:07 +0000 (09:37 +0100)] 
mountfsd: allow O_NONBLOCK on image fds

Let's accept O_NONBLOCK on image fds. It's usually wise to open block
device with O_NONBLOCK as it means that drivers with removable media
won't block until a medium is inserted. Otherwise it has no effect. It
also has no effect when opening regular files. Since block devices and
raw devices are the only two things we accept in mountfsd, it's hence
safe to allow it.

5 weeks agomountfsd: optionally accept an access mode for the dir created by MakeDirectory()
Lennart Poettering [Thu, 20 Nov 2025 12:12:40 +0000 (13:12 +0100)] 
mountfsd: optionally accept an access mode for the dir created by MakeDirectory()

So far we expected the client to access the access mode themselves, and
set a restrictive 0700 server-side.

However, in some scenarios it's handy if the inode is created
server-side already with the right mode, in particular when the client
doesn't do anything with the dir just yet, and just needs it to be there
with the right mode. If it has to adjust the mode client-side it might
otherwise need to fork something off, join the selected userns, adjust
the mode, and kill the child off again.

5 weeks agojson-util: add a generic parser for parsing access mode/umask
Lennart Poettering [Thu, 20 Nov 2025 12:08:03 +0000 (13:08 +0100)] 
json-util: add a generic parser for parsing access mode/umask

Let's move this from user-record.c into generic code and let's beef it
up a bit: allow parsing octal strings. This is particular relevant given
json_variant_new_stat() generates the mode in that format, and we
probably should be able to parse our own fields (even though we
currently don't do that for the data from json_variant_new_stat()).

5 weeks agodissect-image: make verity params for mountfsd_mount_image() optional
Lennart Poettering [Wed, 19 Nov 2025 16:26:15 +0000 (17:26 +0100)] 
dissect-image: make verity params for mountfsd_mount_image() optional

5 weeks agodissect-image: add fd-based flavour of mountfsd_mount_image()
Lennart Poettering [Wed, 19 Nov 2025 16:25:44 +0000 (17:25 +0100)] 
dissect-image: add fd-based flavour of mountfsd_mount_image()

5 weeks agodissect-image: make mountfsd_make_directory_fd() return param optional
Lennart Poettering [Tue, 18 Nov 2025 21:33:06 +0000 (22:33 +0100)] 
dissect-image: make mountfsd_make_directory_fd() return param optional

5 weeks agoiovec-util: add iovec_done_many_and_free()
Lennart Poettering [Tue, 11 Nov 2025 10:36:43 +0000 (11:36 +0100)] 
iovec-util: add iovec_done_many_and_free()

5 weeks agorecursedir: introduce new RECURSE_DIR_UNLINK callback return value
Lennart Poettering [Fri, 28 Nov 2025 15:12:22 +0000 (16:12 +0100)] 
recursedir: introduce new RECURSE_DIR_UNLINK callback return value

This introduces RECURSE_DIR_UNLINK + RECURSE_DIR_UNLINK_GRACEFUL as new
return values for recurse_dir() callbacks. If either is returned the
inode currently processed will be removed and iteration continues with
the next item.

This is useful to have in the recurse_dir() mechanism itself (rather
than implement in the callback itself), due to ordering: we want to pin
the inodes via an fd while calling the callbacks, but we have to close
it before removal of the inodes. By moving this into the recurse_dir()
infra, we can implement this easily.

5 weeks agocore/socket: modernize listen/accept_in_cgroup
Mike Yuan [Fri, 19 Dec 2025 22:58:56 +0000 (23:58 +0100)] 
core/socket: modernize listen/accept_in_cgroup

5 weeks agoSeveral follow-ups for recent PRs (#40167)
Daan De Meyer [Sat, 20 Dec 2025 21:55:25 +0000 (22:55 +0100)] 
Several follow-ups for recent PRs (#40167)

5 weeks agoshutdown: restore error handling 40167/head
Mike Yuan [Sat, 20 Dec 2025 19:43:20 +0000 (20:43 +0100)] 
shutdown: restore error handling

5 weeks agopidref: several follow-ups for pidref_wait_for_terminate_full()
Mike Yuan [Sat, 20 Dec 2025 17:47:03 +0000 (18:47 +0100)] 
pidref: several follow-ups for pidref_wait_for_terminate_full()

Follow-up for e74b571004661ff39fbcbddfe0cbf36d2fda0046

* Do not reuse si
* Refuse timeout == 0
* Use usec_add()
* Rename ret to ret_si - unlike others this one is not so obvious