Commit Graph
100 Commits
Author SHA1 Message Date
Yu Watanabe 97940e77a9 mkosi: bump fedora from 42 to 43
It seems
- the address sanitizer on fedora 42 reports false-positive, or
- probing partitions in libblkid 2.40.4 has a bug.

Not sure which causes the issue, but anyway the address sanitizer
kills udev-worker when sym_blkid_partition_get_name() is called
in udev-builtin-blkid.c.
```
systemd-udevd[488]: ==488==ERROR: AddressSanitizer: stack-buffer-underflow on address 0x7ffdd716e020 at pc 0x563e3ca66fcb bp 0x7ffdd716d970 sp 0x7ffdd716d968
systemd-udevd[488]: READ of size 8 at 0x7ffdd716e020 thread T0 ((udev-worker))
(snip)
systemd-udevd[488]: HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork
systemd-udevd[488]:       (longjmp and C++ exceptions *are* supported)
systemd-udevd[488]: SUMMARY: AddressSanitizer: stack-buffer-underflow (/usr/bin/udevadm+0x187fca) (BuildId: 1fb56dbdf0447aba1185d6e34560b782b76098be)
(snip)
systemd-udevd[488]: Command: (udev-worker)
systemd-udevd[488]: ==488==ABORTING
```

Let's bump fedora from 42 to 43.

Fixes mkosi fedora 42 job failures after c349edfe49.
2025-09-26 09:14:13 +02:00
Yu Watanabe 0f44a6c64a core: assorted fixes and cleanups for cgroup (#39094) 2025-09-26 13:56:25 +09:00
Yu Watanabe 10b2d19219 timer: fix unexpected triggering of service immediately after restart of a timer (#38868)
Fixes: #31231
Fixes: #35805
2025-09-26 09:51:36 +09:00
Yu Watanabe e8a5cda471 core/bpf-firewall: replace unnecessary unit_setup_cgroup_runtime() with unit_get_cgroup_runtime()
Except for the test, bpf_firewall_compile() is only called by the following:
  cgroup_context_apply() -> cgroup_apply_firewall() -> bpf_firewall_compile()
and in the early stage of cgroup_context_apply(), it checks if the cgroup
runtime exists. Hence, it is not necessary to try to allocate the
runtime in bpf_firewall_compile().
2025-09-26 09:28:12 +09:00
Yu Watanabe 13b0e7fc6d core/bpf-firewall: make failures in loading custom BPF program not critical
All other resource control features work as 'best-effort', and failures
in applying them are handled gracefully. However, unlike the other features,
we tested if the BPF programs can be loaded and refuse execution on failure.

Moreover, the previous behavior of testing loading BPF programs had
inconsistency: the test was silently skipped if the cgroup for the unit does
not exist yet, but tested when the cgroup already exists.

Let's not handle failures in loading custom BPF programs as critical, but
gracefully ignore them, like we do for the other resource control features.

Follow-up for fab347489f.
2025-09-26 09:28:12 +09:00
Yu Watanabe 8b4ee3d68d core/unit: fail earlier before spawning executor when we failed to realize cgroup
Before 23ac08115a, even if we failed to
create the cgroup for a unit, a cgroup runtime object for the cgroup is
created with the cgroup path. Hence, the creation of cgroup is failed,
execution of the unit will fail in posix_spawn_wrapper() and logged
something like the following:
```
systemd[1]: testservice.service: Failed to create cgroup /testslice.slice/testservice.service: Cannot allocate memory
systemd[1]: testservice.service: Failed to spawn executor: No such file or directory
systemd[1]: testservice.service: Failed to spawn 'start' task: No such file or directory
systemd[1]: testservice.service: Failed with result 'resources'.
systemd[1]: Failed to start testservice.service.
```

However, after the commit, when we failed to create the cgroup, a cgroup
runtime object is not created, hence NULL will be assigned to
ExecParameters.cgroup_path in unit_set_exec_params().
Hence, the unit process will be invoked in the init.scope.
```
systemd[1]: testservice.service: Failed to create cgroup /testslice.slice/testservice.service: Cannot allocate memory
systemd[1]: Starting testservice.service...
cat[1094]: 0::/init.scope
systemd[1]: testservice.service: Deactivated successfully.
systemd[1]: Finished testservice.service.
```
where the test service calls 'cat /proc/self/cgroup'.

To fix the issue, let's fail earlier when we failed to create cgroup.

Follow-up for 23ac08115a (v258).
2025-09-26 09:28:12 +09:00
Yu Watanabe b97b8fd4e3 machined: introduce per-user instance (#39123)
This is the first part of #38728, just the machined stuff, no the
importd stuff.

This definitely makes sense of its own, hence let's get this in first.

The original PR contains a tescase that tests machined + importd in
combination. This PR here hence is without a testcase, but it's there,
just in the other PR.

This looks large and is large, but do note that much of the machined
changes are very repetitive: they conditionalize PK checks to the system
version, as PK doesn't make sense in the use rversion.
2025-09-26 08:16:18 +09:00
Yu Watanabe a925cea9f2 core/cgroup: make sure deserialized accounting data is not voided (#39130) 2025-09-26 07:54:48 +09:00
Yu Watanabe 22fc89f54d man: fix typo
Follow-up for 73ee723aa7.
2025-09-26 07:24:17 +09:00
Yu Watanabe 5c60d3011f integration tests: do not adjust log level in the test script
We passes log level through kernel command line. It is not necessary to
set to debug level at the beginning, and set to info at the end.
This is important when a test has several subtests. If a subtest sets
log level to info at the end, then subsequent tests may not generate any
useful logs.
2025-09-26 07:20:04 +09:00
Yu Watanabe 3b6288f6be osc-context: fix typo: 8003 -> 3008
Follow-up for dadbb34919 (v258).
2025-09-26 05:42:04 +09:00
Yu Watanabe 04e434cedb find-esp: fix error handling
Follow-up for 4b2b2f3ab7.
2025-09-25 20:08:13 +02:00
Yu Watanabe 77adf896ca firstboot: some love (#39070)
This is split out of #38764.

It mostly introduces the "chrome" stuff that puts a blue at the top of
bottom of the terminal screen when going through interactive tools such
as firstboot, homed-firstboot, and (in future) systemd-sysinstall).

it also introduces a generic "prompt_loop()" helper thatn queries the
user for some option in a loop until the rsponse matches certain
requirements. It's a generalization of a function of the same name that
so far only existed in firstboot.c. The more generic version will be
reused in a later PR by homed-firstboot and by sysinstall.
2025-09-25 00:38:23 +09:00
Yu Watanabe faa3cc2974 machine: fix wrong field name in varlink IDL
Follow-up for d5feeb373c (v258).
2025-09-24 23:23:37 +09:00
Yu Watanabe 513d91a159 boot: two trivial cleanups (#39093) 2025-09-24 23:18:00 +09:00
Yu Watanabe d88ecd2bca libacl → turn into dlopen() dependency (#39087) 2025-09-24 18:25:20 +09:00
Yu Watanabe 63dd548fb4 boot: rename ENROLL_TIMEOUT_TYPE_MAX -> ENROLL_TIMEOUT_MAX
To make it consistent with ENROLL_TIMEOUT_MIN.

Follow-up for 64376936c7.
2025-09-24 18:22:12 +09:00
Yu Watanabe 2e3c792baf boot: use correct format specifier for timeout
This also drops space between number and 's', like we do in format_timespan(),
and fixes spurious type mismatch between timeout_sec and timeout_remain.
2025-09-24 18:20:10 +09:00
Yu Watanabe a359d92547 measure: strip tpm 1.x remnants and make GetActivePcrBanks() work (#39089)
Let's never bother with old TPM 1.x structures, they are not mentioned
in the TCG for TPM2 spec at all. However, the spec does say we should
check the Size field of the relevant structs, before accessing them,
hence do that.

Use that to determine the version of the protocol, before accessing
GetActiveBanks().

Alternative to: #39034
Fixes: #38932
Follow-up to: 6eab4cd44c
2025-09-24 18:14:09 +09:00
Yu Watanabe 01598d644f udev-builtin-net_id: Add DeviceTree-based names for WLAN devices (#39060)
Add support for generating names like wldN based on DeviceTree aliases.

DeviceTree alias names follow de facto conventions. As of writing, there
are so far two ways WLAN devices are represented in DeviceTree aliases
in upstream Linux DTS files:

- Firstly, as wifi0, used for example in t600x-j314-j316.dtsi
- Secondly, as ethernet0 or ethernet1, used for example in
sun8i-q8-common.dtsi, with a comment saying the reason is to "Make
u-boot set mac-address for wifi without an eeprom"

So we need to handle both while generating names. Refactor most of the
logic in names_devicetree() into a helper
names_devicetree_alias_prefix() that takes an alias_prefix instead of
hardcoding "ethernet", and, in the new names_devicetree():

- For prefix "en", use alias_prefix "ethernet"
- For prefix "wl", try alias_prefix "wifi" first, and if that was not
found, fall back to alias_prefix "ethernet"

Since this is a naming scheme change, also gate this behind
NAMING_DEVICETREE_ALIASES_WLAN and NAMING_V259, and document this
change.
2025-09-24 18:10:27 +09:00
Yu Watanabe e2c5e9c011 test: use relative paths to executables
This also makes shebang always use env command, and drops unnecessary
'bash -c' or 'sh -c' when a signle command is invoked in the shell,
like sleep or echo.
2025-09-23 15:48:53 +01:00
Yu Watanabe 2c762d90cf login: update ACL on static device nodes again
In the commit c960ca2be1, the logic of
updating ACL on device node was moved from logind to udevd, but at that
time, mistakenly removed the logic for static nodes.

Fixes a regression caused by c960ca2be1 (v258).
Fixes #39043.
2025-09-23 19:57:25 +09:00
Yu Watanabe 41c4a69653 udev: move devnode_acl() back to libshared
This effectively reverts 1abb592f2f.
No functional change, preparation for the next commit.
2025-09-23 19:53:39 +09:00
Yu Watanabe 6c3c7a8bb7 journal: fix two recent regressions in config handling (#39069)
Fixes #39046.
Fixes #39057.
2025-09-23 02:43:03 +09:00
Yu Watanabe b5fdfedf72 journal: make JournalConfig.set_audit as enum
In systemd <= 257, each set_audit tristate value had special meaning,
- true: enable the kernel audit subsystem,
- false: disable the kernel audit subsystem,
- negative: keep the current kernel audit subsystem state.

And the default is true, rather than negative. So, users sometimes
explicitly pass an empty string to Audit= setting to keep the state.

But since f48cf2a96d (v258), the negative
value is mistakenly used as 'really unspecified' even if an empty string
is explicitly specified.

This makes negative values handled as unspecified as usual, and assign a new
positive value AUDIT_KEEP for when an empty string is explicitly specified.
Also, make the Audit= setting accept "keep" setting, and suggest to use "keep"
rather than an empty string.

Fixes a regression caused by f48cf2a96d (v258).
Fixes #39057.
2025-09-22 23:07:06 +09:00
Yu Watanabe adacdfd9d6 journal: add missing initialization
Otherwise, SplitMode= in journald.conf is always ignored.

Fixes a regression caused by f48cf2a96d (v258).
Fixes #39046.
2025-09-22 23:00:59 +09:00
Yu Watanabe 5c7be92494 Follow-ups for recent changes to creds (#39040) 2025-09-22 04:54:57 +09:00
Yu Watanabe 43cea09f95 machine: fix crash on update from older than v258
UID entry in the machine state file is introduced in v258,
hence when a host is upgraded to v258, the field does not exist in the
file, thus the variable 'uid' is NULL.

Follow-up for 276d200186.
Fixes #39061.
2025-09-22 04:53:57 +09:00
Yu Watanabe e66b233e83 run: include sys/stat.h again
This partially reverts 9adb4685df.

For the case that sys/stat.h is not included indirectly by other headers.
Fixes the following error:
```
../src/run/run.c: In function 'fchown_to_capsule':
../src/run/run.c:2128:21: error: storage size of 'st' isn't known
 2128 |         struct stat st;
      |                     ^~
```
2025-09-19 22:56:49 +02:00
Yu Watanabe 4bbd7ece53 libaudit-util: fix typo
Follow-up for 4d8c5c657a.
2025-09-20 05:14:25 +09:00
Yu Watanabe 99e04eacbd Various smaller tweaks to bootctl (#38996) 2025-09-20 04:28:00 +09:00
Yu Watanabe e37e64e942 man/varlink: fix typo
Follow-up for 04e2cb8928.
2025-09-19 20:25:26 +09:00
Yu Watanabe cbdbf68a72 man/repart: fix typo
Follow-up for 49dcc89ddc.
2025-09-19 20:24:09 +09:00
Yu Watanabe 2672108a1e creds-util: fix typo
Follow-up for 9be0a94b98.
2025-09-19 20:23:05 +09:00
Yu Watanabe b0f6d31f6f varlink: flag -> flags
Follow-up for 86fd19af14.
2025-09-19 20:21:22 +09:00
Yu Watanabe c3c42b30dd firewall-util: remove iptables/libiptc backend support (#38976)
This removes iptables/libiptc backend support in firewall-util, as
already announced by 5c68c51045.
Then, this drops meaningless `FirewallContext` wrapper.
2025-09-19 19:54:17 +09:00
Yu Watanabe fbbbff01fb various tweaks for systemd-creds & related (#38979) 2025-09-19 16:21:12 +09:00
Yu Watanabe 542552612b chase: tweaks to chase_open()/chase_openat() (#38984) 2025-09-19 16:11:24 +09:00
Yu Watanabe 9a8f2b628d chattr-util/acl-util: add helpers that tells us if an inode type can do chattr/acl (#39003)
Split out of #38728 but I think this makes things more readable in
general and makes sense on its own.
2025-09-19 15:50:18 +09:00
Yu Watanabe 8835034df8 importd: some minor tweaks (#39008) 2025-09-19 15:48:14 +09:00
Yu Watanabe 56f003d164 firewall-util: rename firewall-util-nft.c to firewall-util.c 2025-09-19 15:33:17 +09:00
Yu Watanabe 7184f8366f firewall-util: drop FirewallContext
After iptables support is dropped, FirewallContext is a trivial
wrapper of sd_netlink. Let's drop it and directly use sd_netlink.
2025-09-19 15:33:17 +09:00
Yu Watanabe 9b75c41cb3 sd-netlink: make netlink_get_reply_callback_count() accept NULL 2025-09-19 15:33:17 +09:00
Yu Watanabe 114c4b95df firewall-util: remove iptables backend
As already announced by 5c68c51045,
let's remove iptables backend of firewall-util through libiptc.
2025-09-19 15:33:15 +09:00
Yu Watanabe 0c25f8fd0b sd-boot: allow configuration of log levels (#38701)
This allows for more liberal usage of logging functionality as messages
will no longer always show up on screen, regardless of urgency. The log
level to use can be configured through an SMBIOS type 11 string
(`io.systemd.boot.loglevel=`) or by using the `log-level` option in
loader.conf. Valid values are debug, info, notice, warning, err, crit,
alert, and emerg. By default, info will be used.
2025-09-18 12:06:48 +09:00
Yu Watanabe 6f1bc004e9 basic/efivars: read EFI variables using one read(), not two (#38864)
In https://github.com/systemd/systemd/issues/38842 it is reported that
we're again having trouble accessing EFI variables:
```
  [  292.212415] H (udev-worker)[253]: Reading EFI variable /sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f.
  ...
  [  344.397961] H (udev-worker)[253]: Detected slow EFI variable read access on LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f: 52.185510s
```

We don't know what causes the slowdown, but it seems reasonable to avoid
unnecessary read() calls. We would read the 4-byte attr first, and then
the actual value later. But our code always reads the value (and
discards the attr in all cases except one, when _writing_ the variable),
so let's optimize for the case where we read the value and read the
whole contents in one read().
2025-09-18 12:03:30 +09:00
Yu Watanabe 46869e32cd resolve: two cleanups for varlink method (#38467) 2025-09-18 11:57:04 +09:00
Yu Watanabe f871c20bad systemd-repart: add encryption configs into repart.d/* (#38052)
As explained in https://github.com/systemd/systemd/issues/37892, it
would be nice to define per-partition PCRs/key file to use.

The global default config will be still defined as cmdline options, and
`TPM2PCRs=` and `KeyFile=` will be overriden by them.
2025-09-18 11:02:38 +09:00
Yu Watanabe 794f12c778 vmspawn: fix error handling
Follow-up for 9b5ba882bd.
2025-09-18 10:43:36 +09:00
Yu Watanabe d8b60944f5 Bump required minimum version of libfido2 to 1.5.0
Major distributions already have libfido2 >= 1.12.0.
Let's bump the required minimum version to 1.5.0, which provides
FIDO_ERR_UV_BLOCKED.

Note, libfido2 1.5.0 was released on 2020-09-01.

See also #38608.
2025-09-18 09:29:29 +09:00
Yu Watanabe c6e6c85f83 test: several random cleanups and fixlets (#38877) 2025-09-18 09:13:17 +09:00
Yu Watanabe 600c757b5f resolve/varlink: use sd_json_dispatch_const_string() at more places 2025-09-18 09:07:36 +09:00
Yu Watanabe 6c135f7ace resolve/varlink: replace json_dispatch_address() with json_dispatch_byte_array_iovec() 2025-09-18 09:06:48 +09:00
Yu Watanabe a55f64edc0 sysupdate: use conf_files_list_strv_full() where possible (#38198) 2025-09-18 08:56:23 +09:00
Yu Watanabe b594bdeb97 journalctl: add -W as short for --no-hostname (#38704)
--no-hostname is one of the switches I use very often. In particular,
when looking at CI logs, the hostname is almost never interesting.
2025-09-18 08:45:44 +09:00
Yu Watanabe ddd2590a4e Align meson summary and gperf tables (#38578)
No functional change, just refactoring.
2025-09-18 08:44:08 +09:00
Yu Watanabe fd1351e3c8 udev-rules: add OPTIONS="dump-json" to dump current status in JSON format
This produces the output similar to 'udevadm test --json=short'.
2025-09-18 08:43:18 +09:00
Yu Watanabe 7472ca8744 sd-event: drop cgroupv1 support in memory pressure event source 2025-09-18 08:43:02 +09:00
Yu Watanabe 75a9c87004 creds-util: fix comment
Follow-up for 444af9538f.
2025-09-18 08:26:28 +09:00
Yu Watanabe 052b15f4fe udev-config: use secure_getenv() at one more place
Follow-up for b16c6076cb.
2025-09-17 21:51:36 +02:00
Yu Watanabe acd33c5df8 macro: flip ONCE macro to make log_once() and friend actually log once
Previously, ONCE is false for the first time, and true for later times,
hence log_once() and log_once_errno() suppress logging in the first call,
rather than later calls.

Fortunately, ONCE macro is only used in log_once() and log_once_errno(),
hence this only fixes spurious logging.
2025-09-17 21:50:19 +02:00
Yu Watanabe 97eeecaa3c mkosi: support the case /sbin/init is an absolute symbolic link
In that case, the link points to the host file, thus we cannot update
the file.
2025-09-17 22:21:11 +09:00
Yu Watanabe f8d5efc703 mkosi: drop man package from global config
Some distributions does not have man package, but named man-db or so,
and most distribution specific mkosi.conf files already have them.
Let's drop man from the global config.
2025-09-17 22:21:11 +09:00
Yu Watanabe b83f9acfef test: rearrange test-cgroup and test-cgroup-util 2025-09-17 22:20:42 +09:00
Yu WatanabeandNatalie Vock 194e05642f test: reenable test for cg_get_keyed_attribute()
The test case was mistakenly disabled by
a412a1b92a.

Co-authored-by: Natalie Vock <natalie.vock@gmx.de>
2025-09-17 22:20:42 +09:00
Yu Watanabe 6a616e62ad test: skip several test cases when running in chroot
When we are running in chroot, safe_fork() with FORK_MOUNTNS_SLAVE fails
with the following eror:
```
Failed to set mount propagation to MS_SLAVE for all mounts: Invalid argument
```
Let's skip the test cases when we are running in chroot.
2025-09-17 22:20:42 +09:00
Yu Watanabe 2ff79a81a8 test-mount-util: several cleanups
- use safe_fork() with common flags,
- introduce macro for checking privilege.
2025-09-17 22:20:42 +09:00
Yu Watanabe aa5aac9e40 test-sysusers: show diffs in stderr
Otherwise, the diffs are eaten by 'meson test' command unless --verbose
option is specified.
2025-09-17 22:20:42 +09:00
Yu Watanabe 87a87b02b9 test-udev: pass test_env to make the test use systemd-detect-virt in build directory
Otherwise, the test fails if the running host does not have
systemd-detect-virt.
2025-09-17 22:20:42 +09:00
Yu Watanabe abd0eb20e4 test-seccomp-util: several cleanups
- use safe_fork() with FORK_WAIT
- introduce CHECK_SECCOMP() macro about common checks,
- ignore ENOSYS from sched_setscheduler().
2025-09-17 22:20:42 +09:00
Yu Watanabe 6e219a09c2 test-parse-util: use newlocale() and freelocale() to set temporarl locale
This also drops unnecessary call of strtod(), as it is a test for
safe_atod().
2025-09-17 22:20:42 +09:00
Yu Watanabe 5809c451e8 test-efi-string: migrate to use ASSERT_OK() and friends 2025-09-17 22:20:42 +09:00
Yu Watanabe 248f651eb5 core/transaction: coding style update 2025-09-17 22:19:14 +09:00
Yu Watanabe e6b06359c0 core/transaction: rebreak comments and append full-stop 2025-09-17 22:19:14 +09:00
Yu Watanabe 59897d8655 core/transaction: do not call job_is_conflicted_by() twice for the same job
The function searches the list, and it potentially takes O(n).
Let's cache the result and avoid duplicated calls.

This also rebreaks comments, and rewrites conditions in an equivalent
form that is easy to read and matches with the comment above.

No functional change, just refactoring.
2025-09-17 22:19:14 +09:00
Yu Watanabe a5527e2228 resolve: shorten conf parser name and realign gperf table 2025-09-17 22:07:27 +09:00
Yu Watanabe 6fdaa3d22c network/netdev: realign gperf table 2025-09-17 22:07:27 +09:00
Yu Watanabe f7dffbf835 network: shorten conf parser names and realign gperf table 2025-09-17 22:07:27 +09:00
Yu Watanabe 9f94034ea8 nspawn: realign gperf table 2025-09-17 22:07:27 +09:00
Yu Watanabe f56c036fd3 meson: realign summary 2025-09-17 22:07:27 +09:00
Yu Watanabe ee120e5caa sysupdate: use conf_files_list_strv_full() to enumerate definitions
No functional change, just refactoring.
2025-09-17 22:04:06 +09:00
Yu Watanabe 11a1f68217 sysupdate: use conf_files_list_strv_full() to enumerate features
No functional change, just refactoring.
2025-09-17 22:04:06 +09:00
Yu Watanabe 5035e4a4f8 sysupdate: use conf_files_list_strv_full() to enumerate components
With this change, root directory is correctly supported, and symlinked
components are also correctly enumerated.
2025-09-17 22:04:06 +09:00
Yu Watanabe 9ec1b3e075 core/bpf-foreign: use RET_GATHER() 2025-09-17 14:37:20 +02:00
Yu Watanabe bed2723caa bootctl: drop unnecessary verb_unlink()
It is a trivial wrapper for verb_list(). Let's directly use verb_list()
and drop verb_unlink().

Follow-up for 8702496bfb.
2025-09-17 14:35:45 +02:00
Yu Watanabe eb654a769d boot: add assertions
To silence coverity.

Closes CID#1620098.
2025-09-17 14:18:54 +02:00
Yu Watanabe 6c32948b25 dissect: include unistd.h
This is required by e.g. geteuid(), for the case when unistd.h is
indirectly included by other headers.

Continuation of 4f18ff2e29.
2025-09-14 09:47:30 +02:00
Yu Watanabe 8685f8edd1 TEST-64-UDEV-STORAGE: forcibly create new physical volume
When the test VM is accidentally rebooted, there exists the previously
created volume, and the command fails with the following:
```
TEST-64-UDEV-STORAGE.sh[282]: + lvm pvcreate -y /dev/md/mdlvm
TEST-64-UDEV-STORAGE.sh[442]:   Can't initialize physical volume "/dev/md127" of volume group "mdlvm_vg" without -ff
TEST-64-UDEV-STORAGE.sh[442]:   /dev/md127: physical volume not initialized.
[FAILED] Failed to start TEST-64-UDEV-STORAGE-mdadm_lvm.service.
```
Let's ignore the existence of previous volume and forcibly create new one.

Workaround for issue #38240.
2025-09-11 00:06:33 +09:00
Yu Watanabe f9f8a35264 fd-util: use heap only when nwea() does not work
Then, we can avoid malloc in most cases.
2025-09-10 19:20:50 +09:00
Yu Watanabe 93d037dbd0 fd-util: split out fallback logic for close_all_fds()
No functional change. Just refactoring.

With this change, we can test each logic directly without seccomp
or hiding procfs.
2025-09-10 19:20:50 +09:00
Yu Watanabe d8af104fb0 ethtool-util: fix setting advertising link modes
Fixes a regression caused by d307410327.

The link_mode_masks flex array in struct ethtool_link_settings contains
three packed arrays, and the length of each array is given by
link_mode_masks_nwords field:
```
        __u32   link_mode_masks[];
        /* layout of link_mode_masks fields:
         * __u32 map_supported[link_mode_masks_nwords];
         * __u32 map_advertising[link_mode_masks_nwords];
         * __u32 map_lp_advertising[link_mode_masks_nwords];
         */
```
Hence, we cannot use the received data as is through the union, but need
to shift the array to make each map accessible through the union.
2025-09-04 12:57:10 +02:00
Yu Watanabe 2985840855 test: re-enable journal checks for varlink-idl and so on
Previously, we have checked journal after TEST-XX-YYYYY.sh, but it was
forgotten when we switched to mkosi.
This re-enable the check but through ExecStartPost=, and drops unnecessary
workarounds for end.service. Then, this drops unnecessary end.service
and testsuite.target.
2025-09-04 19:50:28 +09:00
Yu Watanabe 13852e1914 network: remove unnecessary fd saved in fd-store
Fixes the following warning:
```
[  130.968170] H systemd-networkd[4288]: Restart operation initiated.
[  130.968265] H systemd-networkd[4288]: Serializing...
[  130.968274] H systemd-networkd[4288]: There is nothing to serialize.
(snip)
[  130.978756] H systemd[1]: Stopped systemd-networkd.service.
(snip)
[  130.991407] H systemd[1]: Starting systemd-networkd.service...
(snip)
[  131.077440] H systemd-networkd[4318]: Enumeration completed.
[  131.077471] H systemd-networkd[4318]: Deserializing...
[  131.077491] H systemd-networkd[4318]: Failed to parse json (line=0, column=0): No data available
[  131.077524] H systemd-networkd[4318]: Failed to deserialize the previous invocation, ignoring: No data available
```
2025-09-04 19:50:28 +09:00
Yu Watanabe df25e4af16 test: do not call GetUserRecord without "service" argument
Otherwise, following debugging log will be saved and the checker for
the varlink-idl log triggers failure:
```
systemd-userwork: processing[3110]: varlink-6-6: Parameters for method
  io.systemd.UserDatabase.GetUserRecord() didn't pass validation on field 'service': No anode
```
2025-09-04 19:50:28 +09:00
Yu Watanabe 2ce397125f core/varlink: do not call io.systemd.oom.ReportManagedOOMCGroups() with empty "cgroups" parameter
Fixes the following varlink IDL validation error:
```
systemd-oomd[1687]: varlink-11-11: Parameters for method io.systemd.oom.ReportManagedOOMCGroups()
  didn't pass validation on field 'cgroups': No anode
```
2025-09-04 19:50:28 +09:00
Yu Watanabe f36f374447 core/varlink: do not send unrealized cgroups to oomd
Follow-ups for 23ac08115a.

Since the commit, the cgroup path is set only when it is realized.

Fixes the following varlink IDL validation failure:
```
systemd-oomd[1687]: Varlink-IDL: Mandatory field 'path' is null or missing on object, refusing.
```
2025-09-04 19:50:12 +09:00
Yu Watanabe 83cfc45dfb hostname: add missing varlink IDL fields
Follow-up for bc60034f43.
2025-09-04 18:15:33 +09:00
Yu Watanabe ce631ae3d9 bootctl: add missing varlink IDL entries
Follow-up for f2751d757f.
2025-09-04 18:15:33 +09:00
Yu Watanabe b10619484d Cleanups for test/units directory (#38807) 2025-09-04 18:11:27 +09:00
Yu Watanabe 2ddeb2adfd install: follow-up for initrd presets (#38790)
Follow up for 4a8c395167.
2025-09-04 18:03:21 +09:00