1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-02-16 09:57:26 +03:00

61273 Commits

Author SHA1 Message Date
Yu Watanabe
aa16488377 tree-wide: drop _pure_ attribute from non-pure functions
Prompted by #27595.
Follow-ups for 6723c28f36ea566faf61d3610012cd89f95ee4a0.

(cherry picked from commit bc52801034e9e33d7aab0cb64c84f64cd9d4c035)
(cherry picked from commit 0baac8e60ef1d26fa0a356f1b7d6a1ed3cd207e0)
2023-06-02 13:42:21 +01:00
Sam James
bff6cefca3 dirent: conditionalize dirent assert based on dirent64 existence
>=musl-1.2.4 doesn't define dirent64 and its LFS friends as its "native"
functions are already LFS-aware.

Check for dirent64 in meson.build and only assert if it exists.

Bug: https://bugs.gentoo.org/905900
Closes: https://github.com/systemd/systemd/pull/25809
(cherry picked from commit eb29296937b268e0140a2ab1cf204c2ebb72fa5a)
(cherry picked from commit 4984f70db5b1ce3103dfb6b2ecdbced86bf92703)
2023-06-02 13:42:21 +01:00
Mike Yuan
6b294523cf network/tc: rename settings in log messages too
Follow-up for c03ef420fa7157b8d4881636fe72596a06e08bb6

(cherry picked from commit 8707dcdf3b5b4b01530639389350505fcb700969)
(cherry picked from commit 5fcbda8b5ec488955d911aca00545d2b80d9ec47)
2023-06-02 13:42:21 +01:00
Xi Ruoyao
bf2f71a061 sd-bus: bus_message_type_from_string is not pure
GCC document [1] says:

    The pure attribute prohibits a function from modifying the state
    of the program that is observable by means other than inspecting
    the function’s return value.

And there is an example:

    `int hash (char *) __attribute__ ((pure));`
    ... Even though hash takes a non-const pointer argument it must
    not modify the array it points to, ...

But we are modifying the object pointed to by the pointer u, which is
clearly a violation of the semantic of pure.

With -ftrivial-auto-var-init (enabled by -Dmode=release), on some
targets (GCC 12.2 on AArch64 and GCC 13.1 on x86_64) performs an
optimization: as the variable "u" in bus_match_parse has been
zero-initialized (by the -ftrivial-auto-var-init option) and never
modified (because a "pure" bus_message_type_from_string is not allowed
to modify it), "u" will be always 0.

Then 0 is used to initialize .value_u8 field of struct
bus_match_component.  This then causes a infinite event loop, so
"systemctl restart" never stops, and pam_systemd timeouts communicating
with logind, etc.

So we should remove the "pure" attribute here.

Fixes #26395.

[1]:https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-pure-function-attribute

(cherry picked from commit 6723c28f36ea566faf61d3610012cd89f95ee4a0)
(cherry picked from commit 59dccdfddbdde5d4ff047108a545106f2bac6872)
2023-06-02 13:42:21 +01:00
Frantisek Sumsal
7576ed2a13 cryptenroll: fix an assertion with weak passwords
Passing 0 to log_xxx_errno() leads to an assertion, so let's not do that:

$ NEWPASSWORD="" build-san/systemd-cryptenroll --unlock-key-file=/tmp/password --password "$img"
/tmp/password has 0644 mode that is too permissive, please adjust the ownership and access mode.
Assertion '(_error) != 0' failed at src/cryptenroll/cryptenroll-password.c:164, function enroll_password(). Aborting.
Aborted (core dumped)

(cherry picked from commit 0e43ab6d245a77aab35c7963ec636f37e6103984)
(cherry picked from commit 133d4ff6d69594e60a546d1efbbd29bc5bfc4f31)
2023-06-02 13:42:21 +01:00
Daan De Meyer
546d3d2e8b units: Add CAP_NET_ADMIN condition to systemd-networkd-wait-online@.service as well
It was added to CAP_NET_ADMIN but we forgot to add it to the template
service as well.

(cherry picked from commit 97211510b06b01a4f053d4cacba4ad4184849bcf)
(cherry picked from commit c937b8f9ded035ef5730ef9db7bf0beb9eafed1b)
2023-06-02 13:42:21 +01:00
Yu Watanabe
15d924ad2f units: add/fix Documentation= about bus interface
(cherry picked from commit d421db6e8b05183104896ca731ac393b661c4480)
(cherry picked from commit 60af5019fb16122746b05d6bf7c396a2574a5a0f)
2023-06-02 13:42:21 +01:00
Yu Watanabe
593d5e403c core/service: fix error cause in the log
Fixes a bug caused by a5648b809457d120500b2acb18b31e2168a4817a.
Fixes #27575.

(cherry picked from commit f86a388de339bc9fd3bc90df7de0d9693b52369f)
(cherry picked from commit 53f7e5f18f19612c4514fce367d7504a9ad8e710)
2023-06-02 13:42:21 +01:00
Marko Korhonen
e274201190 shell completion: add timesync-status and show-timesync to zsh completion file (#27574)
Fixes #27560

(cherry picked from commit 2ad681f53cd06a2c4b54c79c7338adbdec4922d1)
(cherry picked from commit 951c27ce14e38574b52e1712ab6fc3e523dfe6d6)
2023-06-02 13:42:21 +01:00
Miao Wang
e63041299b doc: remove legacy DefaultControlGroup from dbus properties
DefaultControlGroup does not exist any more.

(cherry picked from commit 4fad639a1350b1ce2fa77249f8e81dcc4229ee57)
(cherry picked from commit 32831842bade4d91ff00cf2bbbb12008dd55f835)
2023-06-02 13:42:21 +01:00
Ronan Pigott
a8bbd2f4ce zsh: add service-log-{level,target} completions for systemctl
(cherry picked from commit b3d12ac0da2a8b25abc9052a4f350f1ea1108985)
(cherry picked from commit c31e2fa9c77463e3ff080dd0ae8c92da3eb6b95b)
2023-06-02 13:42:21 +01:00
Yu Watanabe
0f6fd19de9 hwdb: do not include '#' in modalias
Follow-up for 7bd3d6e35a6de8b1bf93e2fae28a64f0c7ffd2ac.
Fixes #27516.

(cherry picked from commit 5b5e54e058745f47184cb88e0037fa576164000c)
(cherry picked from commit 927d2344061b0b74200c54ea38b4daabf2a34273)
2023-06-02 13:42:21 +01:00
Frantisek Sumsal
81b1d9bb8e core: check the unit type more thoroughly when deserializing
Resolves: #27523
(cherry picked from commit 24e91e08f8958241195f97472353adef94884b33)
(cherry picked from commit b1a7a15ed236d88585ecdb32e9a071f8d2133d19)
2023-06-02 13:42:21 +01:00
Frantisek Sumsal
dd38a90202 shared: refuse fd == INT_MAX
Since we do `FD_TO_PTR(fd)` that expands to `INT_TO_PTR(fd) + 1` which
triggers an integer overflow.

Resolves: #27522
(cherry picked from commit cc938f1ce0f1eafc435e0dd1d9fe45aaedc526e1)
(cherry picked from commit 154b108513fe4aa50e7f347abeb0f0d9789a32df)
2023-06-02 13:42:21 +01:00
Ronan Pigott
ac7c88ae02 zsh: remove usage of PREFIX in _systemctl
The usage of PREFIX in this completion is mostly counter to the intended
usage of compsys in zsh. It is generally expected that completion code
provide the available completions and tags in that word position so that
compsys, with user configuration, can filter them to the appropriate set.

One egregious error caused by the usage of PREFIX here is the caching of
SYS_ALL_UNITS, which stored only the unit names prematurely filtered by
the completion prefix, affecting all future completions. For example,

  $ systemctl cat nonsense<TAB>

might find no matching units if nonsense* has no matches, but now

  $ systemctl cat <TAB>

will fail in all future completions even though every unit file
is a valid match, because the cached set has been erroneously filtered
by the last prefix.

(cherry picked from commit 8139407ec109594c11c8c7d2936e9f0eba610f05)
(cherry picked from commit a25605d01d9383070e7b207e64588c83c61241bd)
2023-06-02 13:42:21 +01:00
Nick Rosbrook
741808893f basic/audit-util: make a test request before enabling use of audit
If a container manager does not follow the guidance in
https://systemd.io/CONTAINER_INTERFACE/ regarding audit capabilities,
then the current check may not be sufficient to determine that audit
will function properly. In particular, when calling bind() on the audit
fd, we will get EPERM if running in a user-namespaced container.

Expand the check to make an AUDIT_GET_FEATURE request on the audit fd to
test if it is working. If this fails with ECONNREFUSED, we know it is
because the kernel does not support the use of audit outside of the
initial user namespace.

Note that the approach of this patch was suggested here:
https://github.com/systemd/systemd/pull/19443#issuecomment-829566659

Fixes: #6519
(cherry picked from commit 362235bf59f8ddc6d67be3d6c8604f7fd05d383d)
(cherry picked from commit 4be604e75a38cb0ddbde3f2ade6ae65664fe77be)
2023-06-02 13:42:21 +01:00
David Tardon
07541e5313 main: add missing return
Follow-up-for: 2b5107e1625e0847179da0d35eb544192766886f
(cherry picked from commit 9f2f16a344e8a7660756859dcd303f0bf5763b05)
(cherry picked from commit 4b4285e231658071be2ba00831e6e3935751c9d7)
2023-06-02 13:42:21 +01:00
Frantisek Sumsal
f76199e779 shared: reject empty attachment path
(cherry picked from commit 740831076cfcf2f73f3063fbb040c1ea593dfe6c)
(cherry picked from commit ce096b0212aac52fad658aaec5ff53b0d6eb18ad)
2023-06-02 13:42:21 +01:00
Frantisek Sumsal
747df3b3c5 shared: ignore invalid valink socket fd when deserializing
(cherry picked from commit 1febf60f9d67b851e3f0ace2d87b718d3e0b04d5)
(cherry picked from commit 6027fbf1af46b865316369e40b2978a4a158ba53)
2023-06-02 13:42:21 +01:00
Frantisek Sumsal
bc02be644f core: fix NULL pointer dereference during deserialization
(cherry picked from commit 45b1017488cef2a5bacdf82028ce900a311c9a1c)
(cherry picked from commit d6491282685bf2d672062920166311552ba5e6c0)
2023-06-02 13:42:21 +01:00
Jan Janssen
d2f4faea79 boot: Use correct memory type for allocations
We were using the wrong memory type when allocating pool memory. This
does not seem to cause a problem on x86, but the kernel will fail to
boot at least on ARM in QEMU.

This is caused by mixing different allocation types which ended up
breaking the kernel or EDK2 during boot services exit. Commit
2f3c3b0bee5534f2338439f04b0aa517479f8b76 appears to fix this boot
failure because it was replacing the gnu-efi xpool_print with xasprintf
thereby unifying the allocation type.
But this same issue can also happen without this fix somehow when the
random-seed logic is in use.

Fixes: #27371
(cherry picked from commit ec232e4abd7aebfec06b4814b30129532b2bcefd)
(cherry picked from commit 6ae77d6b99dce05ffb2b9bad3de1c3cafa1d45a8)
2023-06-02 13:42:21 +01:00
Yu Watanabe
06cb47e44c test: replace sleep with timeout
If the test environment is too slow, then sleeping 2 seconds may not be
sufficient.

(cherry picked from commit e94756c5668697d0b11f4cdf449a2fbfe13ffb1f)
(cherry picked from commit 93143b6d6ae42594b5934d2594081e9396310ee0)
v252.10
2023-05-02 21:16:34 +01:00
Yu Watanabe
a4bef2aeb8 test-network: add workaround for bug in iproute2 v6.2.0
Closes #27473.

(cherry picked from commit 8e2449a5c91c619bddcf5e57d8b6f1700d28acdc)
(cherry picked from commit 881382685e228899770b15c0649c947e89fc38aa)
2023-05-02 21:16:34 +01:00
Luca Boccassi
7eefa3f21f coredumpctl: add --file/--root/--image to bash completion
(cherry picked from commit 448ed94dd90b4b1caa9863a3594b14aac7f77cff)
(cherry picked from commit abf9e916ad49754aeb0395fc4385d645924a2d60)
2023-05-02 21:16:34 +01:00
Luca Boccassi
83548e2d8b coredumpctl: fix bash completion matching
When multi-word matching string is quoted, __contains_word compares
it as a whole to the passed option, so it doesn't work.

(cherry picked from commit 20ed583e35cd30ad06c14a0ba833e71c4ca69b48)
(cherry picked from commit dd349a0ede057829f1970260f81ace2fedb6d8d6)
2023-05-02 21:16:34 +01:00
Yu Watanabe
ef50e43838 test: add tests for "systemctl stop" vs triggering by path unit
(cherry picked from commit 843cb225ad88c6d90c8992b0a6ed895bb38e4b77)
(cherry picked from commit e0da5c9bc6e165bc941e84afac90f13499d751a8)
2023-05-02 21:16:34 +01:00
Yu Watanabe
63aab85863 test: create temporary units under /run
(cherry picked from commit 2e701a7946b492cc5f1e56307c4e94110b4c650c)
(cherry picked from commit c1542a967ba8c63ab3faf73db97f42405d99184e)
2023-05-02 21:16:34 +01:00
Yu Watanabe
2d2b66b0be core/path: do not enqueue new job in .trigger_notify callback
Otherwise,
1. X.path triggered X.service, and the service has waiting start job,
2. systemctl stop X.service
3. the waiting start job is cancelled to install new stop job,
4. path_trigger_notify() is called, and may reinstall new start job,
5. the stop job cannot be installed, and triggeres assertion.

So, instead, let's add a defer event source, then enqueue the new start
job after the stop (or any other type) job finished.

Fixes https://github.com/systemd/systemd/issues/24577#issuecomment-1522628906.

(cherry picked from commit bc6377762c210d1bdd7fd2465930731d87dda576)
(cherry picked from commit 03f2a8921ee0671710f920896c0234b9793c07c5)
2023-05-02 21:16:34 +01:00
Yu Watanabe
8fc380d84c core/path: align table
(cherry picked from commit 34a4e22e97bd39de334388567e7a5cf063445238)
(cherry picked from commit 674591e6afec9664f6dc7a7eb0b3a4b3d2a75313)
2023-05-02 21:16:34 +01:00
Yu Watanabe
13bc313436 core/transaction: use hashmap_remove_value() to make not remove job with same ID
When we fail to deserialize job ID, or the current_job_id is overflowed,
we may have jobs with the same ID.
This is paranoia, and just for safety.
Note, we already use hashmap_remove_value() in job_uninstall().

(cherry picked from commit c49dfd8911f49bf383ad7ac1d18be8a4ab39ab09)
(cherry picked from commit 53ac14a05456c787cf62cb864b2036634c40f617)
2023-05-02 21:16:34 +01:00
Yu Watanabe
29fb56c973 fuzz-journal-remote: fix potential fd-leak
(cherry picked from commit 9b72eacad2e23b5916f37c62f20a56b91b257344)
(cherry picked from commit 8f19911bc37509b9b74b3135994aef822cfd8287)
2023-05-02 21:16:34 +01:00
Yu Watanabe
53c751fee9 fuzz-journal-remote: remove temporary files on exit
(cherry picked from commit 7b60f72cdd01a7b1812e9b1cbd3d1198084d26e3)
(cherry picked from commit df1e479d4ede7437fdbb5ca95fe9a975bbe09aca)
2023-05-02 21:16:34 +01:00
Luca Boccassi
e0301cfaf0 hwdb: update to 46b8c3f5b297ac034f2d024c1f3d84ad2c17f410
git restore -s 46b8c3f5b297ac034f2d024c1f3d84ad2c17f410 hwdb.d/ test/hwdb.d test/hwdb-test.sh

(cherry picked from commit 0d745e2de3c0016b1b79dbbfc215af401e09ab86)
2023-05-01 00:39:21 +01:00
Yu Watanabe
141b891de7 sd-journal: make journal_file_copy_entry() return earlier
(cherry picked from commit 85e38da2ec2d9d3a56659105fe4d47c84462d5f9)
(cherry picked from commit df9d1d9bb20846d081cfddfc271b40fdd0550b92)
2023-05-01 00:39:21 +01:00
Yu Watanabe
2a4dca19f1 sd-journal: copy boot ID
The pointer to boot ID may be invalidate by journal_file_move_to_object()
calls in the later loop.

(cherry picked from commit bf9b7728e6e8eb185d2c9bfc6641077489384bc8)
(cherry picked from commit 3bc2553cfcc57144aadacff0555b1a0e45e3fdbf)
2023-05-01 00:39:21 +01:00
Yu Watanabe
413405d856 sd-journal: tighten variable scope
(cherry picked from commit 265b1dc04845788973ef95e80fae8db258a8c49a)
(cherry picked from commit 45b045880c5816b36fc496e519249f57d256136d)
2023-05-01 00:39:21 +01:00
Daan De Meyer
b9d96f2803 journal: Don't try to write garbage if journal entry is corrupted
If journal_file_data_payload() returns -EBADMSG or -EADDRNOTAVAIL,
we skip the entry and go to the next entry, but we never modify
the number of items that we pass to journal_file_append_entry_internal()
if that happens, which means we could try to append garbage to the
journal file.

Let's keep track of the number of fields we've appended to avoid this
problem.

(cherry picked from commit f81409f844ae8077f7ee7664871f73fa7d440581)
(cherry picked from commit 3821e3ea077810a7271dbdaccf67b08c33a28fcf)
2023-05-01 00:39:21 +01:00
Yu Watanabe
6c42735551 test: add test case of negative match for SYMLINK and TAG
(cherry picked from commit a101d91988a889e2c9f4b661a4d290d21fc4d77e)
(cherry picked from commit 4eedc4711ae3577acdf14b351eb770ef0d29c065)
2023-05-01 00:39:21 +01:00
Yu Watanabe
c8bb1f1403 udev-rules: fix negative match rule for SYMLINK and TAG
Fixes #27396.

(cherry picked from commit 2b43ab00b08a052fc0077dd20f111c474730ad52)
(cherry picked from commit cd795f9abc5407db7b6c1d016e3d3d7d3d6c13db)
2023-05-01 00:39:21 +01:00
Lennart Poettering
006c9654be core: fix property getter method for NFileDescriptorStore bus property
Since da6053d0a7c16795e7fac1f9ba6694863918a597 this is a size_t, not an
unsigned. The difference doesn't matter on LE archs, but it matters on
BE (i.e. s390x), since we'll return entirely nonsensical data.

Let's fix that.

Follow-up-for: da6053d0a7c16795e7fac1f9ba6694863918a597

An embarassing bug introduced in 2018... That made me scratch my head
for way too long, as it made #27135 fail on s390x while it passed
everywhere else.

(cherry picked from commit 47226e893b24f1aa84caaa6be266fb3c03442904)
(cherry picked from commit a25e2ef992fe14e2340c992e05148b19719480ce)
2023-05-01 00:39:21 +01:00
Yu Watanabe
4042fa7ea9 repart: always take BSD lock when whole block device is opened
Fixes #27236.

(cherry picked from commit 37734dc677df0ac9ddc837d11aa3f5002a4d67a0)
(cherry picked from commit eec30e3143b07a641c54704fe96518d79f60d85c)
2023-05-01 00:39:21 +01:00
Luca Boccassi
9c9630bfea mkosi: disable fedora builds
The key has moved to a different location and mkosi needs an update
that we cannot do due to dependency on repart.
2023-04-28 16:29:56 +01:00
Luca Boccassi
a2f2827dd8 mkosi: disable centos 8 build
It no longer works, requires a new version of mkosi that we cannot
pull in the stable branch

(cherry picked from commit 9d97c8d423cff83a61950c3508857a395cb113e3)
2023-04-28 16:29:56 +01:00
Thomas Blume
9cd2f2c31f test: use setpriv instead of su for user switch from root
systemd-repart needs to find mkfs.ext4 for the test.
This is located in the directory /usr/sbin on openSUSE Tumbleweed.
But since the variable ALWAYS_SET_PATH in /etc/login.defs is set to yes,
su re-initializes the $PATH variable and removes /usr/sbin.
Hence, mkfs.ext4 is not found and the test fails.
Using setpriv instead of su fixes this issue and is more appropriate to
do the switch user task from root.

[zjs: move setpriv to $BASICTOOLS and force-push to retrigger CI]

(cherry picked from commit c7bf1959d7580e1b7e918b75f852b3bf3fb6eb3c)
(cherry picked from commit 43d194392fd36151c339fa7a1a9eebe30490bddb)
2023-04-28 16:29:56 +01:00
Frantisek Sumsal
5c666aae26 test: wrap mkfs.*/mksquashfs/mkswap binaries when running w/ ASan
(cherry picked from commit e912bef85d4d5a47b474a66555200cbee094f865)
(cherry picked from commit ba683eb48c91e406bfd168da305eefba07f12f43)
2023-04-28 16:29:56 +01:00
Frantisek Sumsal
50f3623b7e test: bump the D-Bus related timeouts to 120s
Let's attempt to reduce the amount of flakes further when the AWS region
we run in is under heavy load and the hypervisor stars stealing our CPU
time.

Follow-up to e0cbb73911 and c78d18215b.

(cherry picked from commit 72f6d0e556d29b695369493a909562ff1325f8cd)
(cherry picked from commit fdcd1807fff02d4ab7f0d80558f5505ac94f301c)
2023-04-28 16:29:56 +01:00
Luca Boccassi
5bba2890ef coredump filter: add mask for 'all' using UINT32_MAX, not UINT64_MAX
The kernel returns ERANGE when UINT64_MAX is passed. Create a mask
and use UINT32_max, which is accepted, so that future bits will also
be set.

(cherry picked from commit 7f3bb8f20dcccaceea8b1ee05f0560b81162037b)
(cherry picked from commit 4f8b2abf699f092576efff55a061efede795d99e)
2023-04-28 16:29:56 +01:00
Luca Boccassi
ab33ee67d5 coredump filter: fix stack overflow with =all
We translate 'all' to UNIT64_MAX, which has a lot more 'f's. Use the
helper macro, since a decimal uint64_t will always be >> than a hex
representation.

root@image:~# systemd-run -t --property CoredumpFilter=all ls /tmp
Running as unit: run-u13.service
Press ^] three times within 1s to disconnect TTY.
*** stack smashing detected ***: terminated
[137256.320511] systemd[1]: run-u13.service: Main process exited, code=dumped, status=6/ABRT
[137256.320850] systemd[1]: run-u13.service: Failed with result 'core-dump'.

(cherry picked from commit 37232d55a7bcace37280e28b207c85f5ca9b3f6b)
(cherry picked from commit 021bb972ffd87aae9f9f7bcc691bf5b812db309b)
2023-04-28 16:29:56 +01:00
dependabot[bot]
f58d5a85a3 build(deps): bump github/super-linter from 4.9.7 to 4.10.1
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.9.7 to 4.10.1.
- [Release notes](https://github.com/github/super-linter/releases)
- [Changelog](https://github.com/github/super-linter/blob/main/docs/release-process.md)
- [Commits](bb2d833b08...454ba4482c)

---
updated-dependencies:
- dependency-name: github/super-linter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
(cherry picked from commit 4a0c9b60b2683da47a35b7c657bb7d2f18583499)
(cherry picked from commit 3fd444c048714591b5341118d1aa426a3b85cabf)
2023-04-28 16:29:56 +01:00
Frantisek Sumsal
33a69cfabd cryptenroll: fix a memory leak
$ dd if=/dev/zero of=luks.img bs=1M count=64
$ echo 1231dfsd234d | cryptsetup luksFormat luks.img
$ build-san/systemd-cryptenroll luks.img
SLOT TYPE
   0 password

=================================================================
==640364==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 64 byte(s) in 1 object(s) allocated from:
    #0 0x7f43ffeb95b5 in __interceptor_realloc.part.0 (/lib64/libasan.so.8+0xb95b5)
    #1 0x7f43ff0a4f2f in greedy_realloc ../src/basic/alloc-util.c:70
    #2 0x404d9f in list_enrolled ../src/cryptenroll/cryptenroll-list.c:30
    #3 0x40f149 in run ../src/cryptenroll/cryptenroll.c:673
    #4 0x40f149 in main ../src/cryptenroll/cryptenroll.c:692
    #5 0x7f43fd64a50f in __libc_start_call_main (/lib64/libc.so.6+0x2750f)

SUMMARY: AddressSanitizer: 64 byte(s) leaked in 1 allocation(s).
Aborted (core dumped)

Reported in https://github.com/systemd/systemd/pull/27007.

(cherry picked from commit 30dbadf65eaa64daa494118eb0cec7750f376c25)
(cherry picked from commit a19396c73b15083d7f23c580a7ff944f766de429)
2023-04-28 16:29:56 +01:00