Luca Boccassi [Tue, 8 Mar 2022 22:13:37 +0000 (22:13 +0000)]
core: do not return 'skipped' when Condition*= fail with StartUnitWithFlags()
Backward incompatible change to avoid returning 'skipped' if a condition causes
a job activation to be skipped when using StartUnitWithFlags().
Job results are broadcasted, so it is theoretically possible that existing
software could get confused if they see this result.
Replaces https://github.com/systemd/systemd/pull/22369
(cherry picked from commit
ee3ae55e7537c716530b293c91f3fb9ae22a8049)
Bastien Nocera [Mon, 7 Mar 2022 09:11:12 +0000 (10:11 +0100)]
memory-id: Work-around incorrect "Number of slots"
In some BIOSes, the "Number of slots or sockets available for Memory
Devices in this array" is incorrectly set to the number of memory array
that's populated.
Work-around this problem by outputting the number of sockets after
having parsed them so that consumers of this data can carry on expecting
an accurate number in this property.
This fixes the number of memory slots advertised for the HP Z600.
See https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1686
(cherry picked from commit
d48bf01636d322443f69845da2f40bea70317c92)
Luca Boccassi [Mon, 7 Mar 2022 16:20:42 +0000 (16:20 +0000)]
TEST-29: do not pass -q to mk/unsquashfs, not supported on CentOS 8
(cherry picked from commit
963c560a2939c79ba9896280cb5660fea64c94cf)
Zbigniew Jędrzejewski-Szmek [Thu, 3 Mar 2022 15:26:36 +0000 (16:26 +0100)]
portable: add return parameter to GetImageMetadataWithExtensions
The complaint was that the output array was used for two kinds of data, and the
input flag decided whether this extra data should be included. The flag is
removed, and instead the old method is changed to include the data always as
a separate parameter.
This breaks backward compatibility, but the old method is effectively broken
and does not appear to be used yet, at least in open source code, by
searching on codesearch.debian.net and github.com.
Fixes #22404.
Co-authored-by: Luca Boccassi <bluca@debian.org>
(cherry picked from commit
087a799f64560bb0379b8a99ebbd9ca84804e4c3)
Zbigniew Jędrzejewski-Szmek [Thu, 3 Mar 2022 18:13:20 +0000 (19:13 +0100)]
portable: inline one variable declaration
(cherry picked from commit
90e3f3581dd578a23aec9f63ca846babfe4fcaa0)
Zbigniew Jędrzejewski-Szmek [Thu, 3 Mar 2022 17:56:06 +0000 (18:56 +0100)]
portablectl: reorder if branches to match previous conditional in the same function
One is a ternary op, the other an normal conditional, but they should still use
the same order of branches.
(cherry picked from commit
573e33de078956ded078653ef3f90f93469b4dbf)
Zbigniew Jędrzejewski-Szmek [Thu, 3 Mar 2022 17:55:26 +0000 (18:55 +0100)]
TEST-29: trim output a bit
IIUC, pipefail doesn't matter for a sequence of commands joined with &&, and we
don't have any pipes. And such a failing expression also does not trigger an
exit, so the set +e/set -e were noops.
(cherry picked from commit
13391986b50e76cc58744c44ccb8124e48fd3c3d)
Luca Boccassi [Tue, 25 Jan 2022 15:49:22 +0000 (15:49 +0000)]
portable: add flag to return extension-releases in GetImageMetadataWithExtensions
Return the name of each extension and the associated extension-release
file, and pretty-print them in 'portablectl inspect', if a new flag
is passed.
$ portablectl inspect --extension app2 --extension app0 minimal app0 app1
(Matching unit files with prefixes 'app0', 'app1'.)
Image:
/run/portables/minimal.raw
Portable Service:
n/a
Operating System:
Debian GNU/Linux 10 (buster)
Extension:
/run/portables/app2.raw
Extension Scope:
n/a
Extension Compatibility Level:
n/a
Portable Service:
n/a
Portable Prefixes:
n/a
Operating System:
n/a (debian 10)
Extension:
/run/portables/app0.raw
Extension Scope:
n/a
Extension Compatibility Level:
n/a
Portable Service:
n/a
Portable Prefixes:
n/a
Operating System:
n/a (debian 10)
Unit files:
app0.service
(cherry picked from commit
e3f7ed944ae750a40685c52349f3cc850db0876e)
Frantisek Sumsal [Thu, 10 Feb 2022 11:29:53 +0000 (12:29 +0100)]
test: accept GC'ed units in newer LVM
Since lvm 2.03.15 the transient units are started without `-r`, thus
disappearing once they finish and breaking the test (which expects them
to remain loaded after finishing). Let's accept `LoadState=not-found` as
a valid result as well to fix this.
Follow-up to:
d10d562bd4b9f93130fb2b23f2b0d0d4126ea7d4
See: https://sourceware.org/git/?p=lvm2.git;a=commit;h=
fbd8b0cf43dc67f51f86f060dce748f446985855
(cherry picked from commit
b034f02c628057c30a2136289a1b388a6fb9a737)
Frantisek Sumsal [Wed, 9 Feb 2022 21:35:03 +0000 (22:35 +0100)]
test: lvm 2.03.15 dropped the static autoactivation
so install the respective generator only if we're running with older
lvm versions.
See: https://sourceware.org/git/?p=lvm2.git;a=commit;h=
ee8fb0310c53ed003a43b324c99cdfd891dd1a7c
(cherry picked from commit
d10d562bd4b9f93130fb2b23f2b0d0d4126ea7d4)
Zbigniew Jędrzejewski-Szmek [Thu, 3 Mar 2022 11:14:13 +0000 (12:14 +0100)]
meson: move files' closing brace to separate line
(cherry picked from commit
2f492a739c5edd09f1c16bc7da84c37a8744121a)
Zbigniew Jędrzejewski-Szmek [Wed, 2 Mar 2022 13:52:50 +0000 (14:52 +0100)]
meson: use files() for libudevd_core_sources too
I'm not sure why a plain-text list was used in this case.
(cherry picked from commit
b9acb5074e115a3010f8507c6f3d2cad4132aa15)
Zbigniew Jędrzejewski-Szmek [Wed, 2 Mar 2022 13:49:32 +0000 (14:49 +0100)]
meson: do not use split() in file lists
The approach to use '''…'''.split() instead of a list of strings was initially
used when converting from automake because it allowed identical blocks of lines
to be used for both, making the conversion easier.
But over the years we have been using normal lists more and more, especially
when there were just a few filenames listed. This converts the rest.
No functional change.
(cherry picked from commit
f1b98127ff6320648cc3dc876f3b6a5aa3af204b)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 15:39:34 +0000 (16:39 +0100)]
journalctl: advertise --header a bit more
Fixes #2738.
(cherry picked from commit
367a5e8a67bbc2b5e03ca1a3e5a601ef49b5bd2a)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 15:26:12 +0000 (16:26 +0100)]
man: describe UNIT=/USER_UNIT=
Fixes 17538.
(cherry picked from commit
c1d1742a7f6a65f60dce1a4f22a22d443493757c)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 15:07:19 +0000 (16:07 +0100)]
man: tweak description of auto/noauto
I think the current behaviour is stupid: 'x-systemd.automount,noauto' should
mean that we create the units, but don't add .mount or .automount to any targets.
Instead, we completely ignore 'noauto'. But let's at least describe the
implementation.
Text suggested by dpartrid in the bug.
Fixes #21040.
(cherry picked from commit
55fabe92e2efb1a907d4c3c93dc63b96ff5b6860)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 14:41:31 +0000 (15:41 +0100)]
man: describe capability checks on the bus
A description of SD_BUS_VTABLE_CAPABILITY is added, and the discussion
on SD_BUS_VTABLE_UNPRIVILEGED in expanded. I think it would be nice
to add longer description of how access is checked (maybe in sd-bus(3)),
but I'm leaving that for later. I think the text that was added here
describes everything, even if tersely.
Fixes #21882.
(cherry picked from commit
b4e7d7555e6266ff566a17eb5f616b365771028f)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 14:23:17 +0000 (15:23 +0100)]
man: fix formatting of macros in sd_bus_add_object
docbook would convert the newline to a space before the first argument:
SD_BUS_METHOD_WITH_ARGS( member, args, result, handler)
And we need each item in a separate <para>, otherwise they'll all be in
one line.
(cherry picked from commit
3c080282e928a7edfcdb74feb2139ef1ac6f2ad0)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 13:13:56 +0000 (14:13 +0100)]
man: say that we ignore ignored options
Fixes #22057.
(cherry picked from commit
382586894b9c09974aa734a1f77d3f6f69126d76)
Zbigniew Jędrzejewski-Szmek [Fri, 4 Mar 2022 13:03:50 +0000 (14:03 +0100)]
man: drop outdated info about polkit in pid1
Fixes #22648.
(cherry picked from commit
46d362f406e1a75fc8f924b9b16d5d352be6d081)
David Tardon [Thu, 3 Mar 2022 14:58:24 +0000 (15:58 +0100)]
devnode-acl: use _cleanup_ to free acl_t
(cherry picked from commit
203ea2c8f158288fea56c5be980715b2b7e002fe)
Alfonso Sánchez-Beato [Thu, 3 Mar 2022 10:42:41 +0000 (11:42 +0100)]
sd-stub: do not print warning if filesystem is not supported
Do not print a warning in case we try to load the file system protocol for an
unsupported file system, just return EFI_SUCCESS instead.
(cherry picked from commit
178d598b5fae36fa9d54c30668771f9c626724f6)
Tobias Stoeckmann [Wed, 2 Mar 2022 21:03:26 +0000 (22:03 +0100)]
core: check size before mmap
The data type off_t can be 64 on 32 bit systems if they have large
file support. Since mmap expects a size_t with 32 bits as second
argument truncation could occur. At worst these huge files could
lead to mmaps smaller than the previous check for small files.
This in turn shouldn't have a lot of impact because mmap allocates
at page size boundaries. This also made the PAGE_ALIGN call in
open_mmap unneeded. In fact it was neither in sync with other mmap
calls nor with its own munmap counterpart in error path.
If such large files are encountered, which is very unlikely in these
code paths, treat them with the same error as if they are too small.
(cherry picked from commit
1a823cdeb9faea3849843e0b3dae0fbdd607e8b7)
Lennart Poettering [Thu, 3 Mar 2022 17:31:48 +0000 (18:31 +0100)]
killall: show PID of processes killed in final killing spree
Let's show the PID of killed processes in all cases, to make debugging
easier.
See: https://lists.freedesktop.org/archives/systemd-devel/2022-March/047504.html
(cherry picked from commit
94ce42bcb6288583bfa8995aa705d99a9221f47e)
Daan De Meyer [Tue, 1 Mar 2022 17:04:13 +0000 (17:04 +0000)]
shared: Add more dlopen() tests
Add dlopen_dw(), dlopen_elf() and dlopen_pcre2() to the dlopen test.
To enable adding dlopen_pcre2(), we move pcre2-dlopen.h/c from
src/journal to src/shared.
(cherry picked from commit
ee48779e05831a0ec5e1ba5e7ed5fe92aaca1d9e)
Josh Triplett [Fri, 25 Feb 2022 20:40:45 +0000 (12:40 -0800)]
file-hierarchy: Document /sys/fs/cgroup
file-hierarchy does not mention anything about the expected mountpoint
for cgroups. This may lead some software to believe it will need to
search for it (e.g. by scanning mountinfo) rather than just looking in
the canonical location.
Document the canonical mountpoint as /sys/fs/cgroup. Also provide
information on the non-default configurations, but
make it clear that in such configurations if cgroup2 is mounted (hybrid
mode) it won't have resource controllers attached. This will help
software know if it should fall back to /sys/fs/cgroup/unified or just
ignore that case.
(cherry picked from commit
c8aeb9d672fac7ac2d1e350431b7b4e734b90a5d)
Zbigniew Jędrzejewski-Szmek [Mon, 28 Feb 2022 08:47:28 +0000 (09:47 +0100)]
man: recommend built-in platform.freedesktop_os_release() in our page
Python gained support for reading os-release, let's advertise it a bit more.
Our open-coded example is still useful, but let's not suggest it as the
default implementation.
I added quotes around the printed string because it looks a bit better
this way.
(cherry picked from commit
ee6fd6a50922d2b27c97084e1c3f9872d495c273)
Frantisek Sumsal [Fri, 25 Feb 2022 14:09:07 +0000 (15:09 +0100)]
test: accept both unpadded and padded partition sizes
Since util-linux/util-linux@
921c7da55ec78350e4067b3fd6b7de6f299106ee
libfdisk aligns the last partition (on GPT) for optimal I/O. Let's
account for that.
Fixes: #22606
(cherry picked from commit
d490188b8f6da658d8086dd53b7db95735e5cca1)
Daan De Meyer [Fri, 25 Feb 2022 11:01:07 +0000 (11:01 +0000)]
mkosi: Remove Arch nspawn workaround
This has been fixed so the workaround can be removed.
(cherry picked from commit
6b2ab8fc5cc0f706b85cbd559e8dcf4e05d7687d)
Daan De Meyer [Thu, 24 Feb 2022 13:29:54 +0000 (13:29 +0000)]
meson: Drop required libfdisk version to 2.32
We initially pinned this to 2.33 in
e71f5585b9b0580428f9530d0a485265c9c25165 because libfdisk 2.32 in
CentOS 8 didn't have
https://github.com/karelzak/util-linux/commit/
2f35c1ead621f42f32f7777232568cb03185b473
backported.
If we check now, we can see it has been backported
(https://git.centos.org/rpms/util-linux/blob/c8s/f/SOURCES/0048-libfdisk-count-gaps-to-possible-size-when-resize.patch)
which means we can drop the required version to 2.32 instead of 2.33.
(cherry picked from commit
baec7d782b07414f0c13ba3a0b0b526973e04923)
Peter Hutterer [Tue, 22 Feb 2022 23:12:43 +0000 (09:12 +1000)]
udev-builtin-input_id: don't label absolute mice as pointing sticks
The Getac UX10 tablet exposes a "CUST0000:00 0EEF:C002 Mouse" device
with BTN_LEFT/RIGHT and ABS_X/Y on the i2c bus. This causes the builtin
to incorrectly label it as pointing stick (all i2c mice are
tagged as ID_INPUT_POINTING_STICK, see
3d7ac1c655ec4).
Fix this by adding a separate variable for absolute pointing
devices like the VMmouse USB mouse or this Getac tablet - this way we
skip the pointing stick check.
See https://gitlab.freedesktop.org/libinput/libinput/-/issues/743
for recordings.
(cherry picked from commit
8ac9ec4d5c210825759d515422d3e66c20615fc1)
Zbigniew Jędrzejewski-Szmek [Tue, 22 Feb 2022 21:54:23 +0000 (22:54 +0100)]
man: various issues reported in #22432
Fixes #22432.
(cherry picked from commit
fe003f02dd19b9ae88af0384e5cf4f5934d1e9db)
Zbigniew Jędrzejewski-Szmek [Tue, 22 Feb 2022 21:55:42 +0000 (22:55 +0100)]
man/systemd-analyze: split out example to a separate section
It turns out we can't have an Example nested in a list, and every
combination of nesting I tried looked bad either in troff or in html.
The whole example is moved to a separate section.
(cherry picked from commit
e6ce19516315138d983ed4b7776d9ebd2fb296d8)
Zbigniew Jędrzejewski-Szmek [Thu, 17 Feb 2022 19:34:14 +0000 (20:34 +0100)]
man: adjust command for Fedora installations
glibc now has Suggests:glibc-minimal-langpack, so we don't
need to mention it ourselves.
--repo=… is a nicer alternative to --disablerepo=* --enablerepo=….
It also avoids the issue with quoting.
Let's exclude weak deps, but install systemd-networkd, so the container
can configure networking if necessary.
(cherry picked from commit
8c4db5629c877425b2f46e414a94a8f24280a9d3)
Yu Watanabe [Tue, 22 Feb 2022 17:03:54 +0000 (02:03 +0900)]
journal-send: close fd on exit when running with valgrind
Fixes an issue reported in #22576.
(cherry picked from commit
eb9752d2be82d994cd6a17f271be27c4d56423d6)
Yu Watanabe [Tue, 22 Feb 2022 16:52:29 +0000 (01:52 +0900)]
test-journal-send: close fd opend by syslog()
Fixes an issue reported in #22576.
(cherry picked from commit
9048a6ccf3bd4f6794fc1ac9a838e1a0bfbcabf1)
Yu Watanabe [Tue, 22 Feb 2022 16:29:42 +0000 (01:29 +0900)]
unit: escape %
Fixes #22601.
(cherry picked from commit
6e4d122ad1db11ca898de183f898f731c4839d4a)
Lennart Poettering [Tue, 22 Feb 2022 15:51:58 +0000 (16:51 +0100)]
clang-format: we actually typically use 16ch continuation indentation
We use 8 for blocks, and 16 for continuation in most cases afaics, hence
say so in .clang-format too
(cherry picked from commit
92148fb77766767fdb6ad6e52747317dae2aae85)
Yu Watanabe [Tue, 22 Feb 2022 12:46:41 +0000 (21:46 +0900)]
test: fix file descriptor leak in test-psi-util
Fixes an issue reported in #22576.
(cherry picked from commit
be99883e131ef422f8278ec1d099520996a78bb0)
Yu Watanabe [Tue, 22 Feb 2022 12:44:58 +0000 (21:44 +0900)]
test: fix file descriptor leak in test-tmpfiles.c
Also fixes a typo in assertion.
Fixes an issure reported in #22576.
(cherry picked from commit
1da5325d19dee654326e5fa2f61262e5e0a40fff)
Yu Watanabe [Tue, 22 Feb 2022 12:42:22 +0000 (21:42 +0900)]
test: fix file descriptor leak in test-fs-util
Fixes an issue reported in #22576.
(cherry picked from commit
19962747ca86a25e7102c536380bb2e9d7cfee9a)
Jan Janssen [Mon, 21 Feb 2022 12:45:06 +0000 (13:45 +0100)]
boot: Handle shift and logo keys too
Some firmware supports sending input events for shift and logo keys.
Previously, we would suppress these with EFI_NOT_READY unless
some other key was pressed alongside, but it is really the job of the
caller to decide how to handle these.
Note that for keys that already have a printable shift representation
the reported input event will not have the shift key bits set
(Shift+a is reported as A). Should some firmware turn out to violate the
spec here we can always remove that part.
(cherry picked from commit
3f9973bf368475d1f2f7f587e7af728dd6d84e10)
Jan Janssen [Mon, 21 Feb 2022 11:52:30 +0000 (12:52 +0100)]
boot: Properly check status code of console_key_read
In some cases there was a unlikely possibility that we would look
at an uninitialized key value.
Also, returning in case of unexpected input error cases should prevent
infinite looping.
(cherry picked from commit
1cb5d7857b205023a0473ec13df154ae2e254066)
Yu Watanabe [Tue, 22 Feb 2022 12:38:15 +0000 (21:38 +0900)]
test: fix file descriptor leak in test-oomd-util
Fixes an issue reported in #22576.
(cherry picked from commit
282696ce52471f5e3c963b9d98dbc89fba3a1fba)
Yu Watanabe [Tue, 22 Feb 2022 12:11:51 +0000 (21:11 +0900)]
test: fix file descriptor leak in test-catalog
Fixes an issue reported in #22576.
(cherry picked from commit
62d4b3b36e9aba9e605ba042a75c374155b6e18b)
Yu Watanabe [Tue, 22 Feb 2022 11:23:58 +0000 (20:23 +0900)]
test-oomd-util: fix conditional jump on uninitialised value
Fixes #22577.
(cherry picked from commit
a6d6a51d83fae32212e1780e71b16517a4df9a57)
Yu Watanabe [Tue, 22 Feb 2022 11:21:45 +0000 (20:21 +0900)]
test-oomd-util: style fixlets
(cherry picked from commit
d9fe39b24a0a5464c83c7a754752ca21dbd2578f)
Franck Bui [Fri, 18 Feb 2022 09:06:24 +0000 (10:06 +0100)]
core: really skip automatic restart when a JOB_STOP job is pending
It's not clear why we rescheduled a service auto restart while a stop job for
the unit was pending. The comment claims that the unit shouldn't be restarted
but the code did reschedule an auto restart meanwhile.
In practice that was rarely an issue because the service waited for the next
auto restart to be rescheduled, letting the queued stop job to be proceed and
service_stop() to be called preventing the next restart to complete.
However when RestartSec=0, the timer expired right away making PID1 to
reschedule the unit again, making the timer expired right away... and so
on. This busy loop prevented PID1 to handle any queued jobs (and hence giving
no chance to the start rate limiting to trigger), which made the busy loop last
forever.
This patch breaks this loop by skipping the reschedule of the unit auto restart
and hence not depending on the value of u->restart_usec anymore.
Fixes: #13667
(cherry picked from commit
c972880640ee19e89ce9265d8eae1b3aae190332)
Matthias Lisin [Mon, 21 Feb 2022 01:46:57 +0000 (02:46 +0100)]
docs: swap Name and Partition Type UUID in header
(cherry picked from commit
7d5beae28ca75725a680b0ab3ef5728a252282e5)
Matthias Lisin [Mon, 21 Feb 2022 01:32:25 +0000 (02:32 +0100)]
tools: adjust re.match to recent gpt.h additions
with addition of SD_ID128_MAKE_UUID_STR entries to src/shared/gpt.h the tool
failed halfway due to falsly matching the new entries
(cherry picked from commit
5fa87e9651074e8b78f632e43f0c2001a27f5b60)
Luca Boccassi [Fri, 18 Feb 2022 22:56:56 +0000 (22:56 +0000)]
mkosi CI: mask isc-dhcp-server units
The packages are installed to provide the dhcpd binary, used by
test/test-network/systemd-networkd-tests.py, but we don't need the units
to run, and in fact in some cases the image fails to boot because of
them:
Spawning container image on /home/runner/work/systemd/systemd/image.raw.
Press ^] three times within 1s to kill container.
● isc-dhcp-server.service loaded failed failed ISC DHCP IPv4 server
● isc-dhcp-server6.service loaded failed failed ISC DHCP IPv6 server
Container image failed with error code 1.
Error: Process completed with exit code 1.
Mask the units with an --extra-tree.
(cherry picked from commit
21838f36a64e71dd6439692e57d629f27e4954ea)
Frantisek Sumsal [Fri, 18 Feb 2022 22:09:18 +0000 (23:09 +0100)]
systemctl: make `--timestamp=` affect the `show` verb as well
Currently the `--timestamp=` option has no effect on timestamps shown by
`systemctl show`, let's fix that.
Spotted in #22567.
Before:
```
$ systemctl show --timestamp=us+utc systemd-journald | grep Timestamp=
ExecMainStartTimestamp=Sat 2021-12-11 15:25:57 CET
StateChangeTimestamp=Sat 2021-12-11 15:25:57 CET
InactiveExitTimestamp=Sat 2021-12-11 15:25:57 CET
ActiveEnterTimestamp=Sat 2021-12-11 15:25:57 CET
ActiveExitTimestamp=Sat 2021-12-11 15:25:57 CET
InactiveEnterTimestamp=Sat 2021-12-11 15:25:57 CET
ConditionTimestamp=Sat 2021-12-11 15:25:57 CET
AssertTimestamp=Sat 2021-12-11 15:25:57 CET
```
After:
```
$ systemctl show --timestamp=us+utc systemd-journald | grep Timestamp=
ExecMainStartTimestamp=Sat 2021-12-11 14:25:57.177848 UTC
StateChangeTimestamp=Sat 2021-12-11 14:25:57.196714 UTC
InactiveExitTimestamp=Sat 2021-12-11 14:25:57.177871 UTC
ActiveEnterTimestamp=Sat 2021-12-11 14:25:57.196714 UTC
ActiveExitTimestamp=Sat 2021-12-11 14:25:57.144677 UTC
InactiveEnterTimestamp=Sat 2021-12-11 14:25:57.176331 UTC
ConditionTimestamp=Sat 2021-12-11 14:25:57.176980 UTC
AssertTimestamp=Sat 2021-12-11 14:25:57.176980 UTC
```
(cherry picked from commit
a59e5c625da5a6e0c46e493d55f2f4212e9457ca)
Lennart Poettering [Thu, 17 Feb 2022 13:49:54 +0000 (14:49 +0100)]
pid1: set SYSTEMD_NSS_DYNAMIC_BYPASS=1 env var for dbus-daemon
There's currently a deadlock between PID 1 and dbus-daemon: in some
cases dbus-daemon will do NSS lookups (which are blocking) at the same
time PID 1 synchronously blocks on some call to dbus-daemon. Let's break
that by setting SYSTEMD_NSS_DYNAMIC_BYPASS=1 env var for dbus-daemon,
which will disable synchronously blocking varlink calls from nss-systemd
to PID 1.
In the long run we should fix this differently: remove all synchronous
calls to dbus-daemon from PID 1. This is not trivial however: so far we
had the rule that synchronous calls from PID 1 to the dbus broker are OK
as long as they only go to interfaces implemented by the broke itself
rather than services reachable through it. Given that the relationship
between PID 1 and dbus is kinda special anyway, this was considered
acceptable for the sake of simplicity, since we quite often need
metadata about bus peers from the broker, and the asynchronous logic
would substantially complicate even the simplest method handlers.
This mostly reworks the existing code that sets SYSTEMD_NSS_BYPASS_BUS=
(which is a similar hack to deal with deadlocks between nss-systemd and
dbus-daemon itself) to set SYSTEMD_NSS_DYNAMIC_BYPASS=1 instead. No code
was checking SYSTEMD_NSS_BYPASS_BUS= anymore anyway, and it used to
solve a similar problem, hence it's an obvious piece of code to rework
like this.
Issue originally tracked down by Lukas Märdian. This patch is inspired
and closely based on his patch:
https://github.com/systemd/systemd/pull/22038
Fixes: #15316
Co-authored-by: Lukas Märdian <slyon@ubuntu.com>
(cherry picked from commit
de90700f36f2126528f7ce92df0b5b5d5e277558)
Lennart Poettering [Thu, 17 Feb 2022 13:47:34 +0000 (14:47 +0100)]
docs: $SYSTEMD_NSS_BYPASS_BUS is not honoured anymore, don't document it
It was removed back in
1684c56f40f020e685e70b3d1785d596ff16f892
Follow-up for:
1684c56f40f020e685e70b3d1785d596ff16f892
(cherry picked from commit
cec16155e3dab4f123ba073223477a4ef2cf10f9)
Lennart Poettering [Thu, 17 Feb 2022 13:40:25 +0000 (14:40 +0100)]
pid1: lookup owning PID of BusName= name of services asynchronously
A first step of removing blocking calls to the D-Bus broker from PID 1.
There's a lot more to got (i.e. grep src/core/ for sd_bus_creds
basically), but it's a start.
Removing blocking calls to D-Bus broker deals systematicallly with
deadlocks caused by dbus-daemon blocking on synchronous IPC calls back
to PID1 (e.g. Varlink calls through nss-systemd). Bugs such as #15316.
Also-see: https://github.com/systemd/systemd/pull/22038#issuecomment-
1042958390
(cherry picked from commit
e39eb045a502d599e6cd3fda7a46020dd438d018)
Lennart Poettering [Thu, 17 Feb 2022 16:23:48 +0000 (17:23 +0100)]
pid1: watch bus name always when we have it
Previously we'd only watch configured service bus names if Type=dbus was
set. Let's also watch it for other types. This is useful to pick up the
main PID of such a service. In fact the code to pick it up was already
in place, alas it didn't do anything given the signal was never received
for it. Fix that.
(It's also useful for debugging)
(cherry picked from commit
1e8b312e5a22538f91defb89cf2997e09e106297)
Yu Watanabe [Fri, 4 Feb 2022 03:05:33 +0000 (12:05 +0900)]
resolve: synthesize empty domain only when A and/or AAAA key is requested
Follow-up for
3b2ac14ac45bef01cf489c3231b868936866444b (#22231).
Before this commit.
---
$ dig -t SRV '.'
; <<>> DiG 9.16.24-RH <<>> -t SRV .
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16836
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;. IN SRV
;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Feb 04 12:01:09 JST 2022
;; MSG SIZE rcvd: 28
---
After this commit.
---
$ dig -t SRV '.'
; <<>> DiG 9.16.24-RH <<>> -t SRV .
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19861
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;. IN SRV
;; AUTHORITY SECTION:
. 86394 IN SOA a.root-servers.net. nstld.verisign-grs.com.
2022020302 1800 900 604800 86400
;; Query time: 20 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Feb 04 12:00:12 JST 2022
;; MSG SIZE rcvd: 103
---
Fixes #22401.
(cherry picked from commit
30fa3aa1fa56d9a1a4f3a26c0bc02253d44dfa0f)
Yu Watanabe [Tue, 22 Feb 2022 22:50:30 +0000 (07:50 +0900)]
resolve: make dns_scope_good_domain() take DnsQuery*
(cherry picked from commit
176a9a2cca47f7c1553d96f7dd51c2193a269dbc)
Yu Watanabe [Tue, 22 Feb 2022 22:49:40 +0000 (07:49 +0900)]
resolve: drop never matched condition
As dns_scope_good_domain() does not return negative errno.
(cherry picked from commit
830f50ab1e03fa7ee262876ed42023d10e89688d)
Yu Watanabe [Sun, 23 Jan 2022 21:36:53 +0000 (06:36 +0900)]
resolve: synthesize null address, IPv4 broadcast address, or invalid domain
These are filtered in `dns_scope_good_domain()`, but not synthesized.
Fixes #22229.
(cherry picked from commit
46b53e8035fb60c9a7f26dd32d6689ab3b7da97c)
Yu Watanabe [Sun, 23 Jan 2022 21:07:33 +0000 (06:07 +0900)]
resolve: synthesize empty name
Do not return any error for empty name. Just returns empty answer.
Before:
---
$ dig .
; <<>> DiG 9.16.24-RH <<>> .
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 13617
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jan 24 05:49:30 JST 2022
;; MSG SIZE rcvd: 28
---
After:
---
$ dig .
; <<>> DiG 9.16.24-RH <<>> .
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7957
;; flags: qr aa rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;. IN A
;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Mon Jan 24 06:05:02 JST 2022
;; MSG SIZE rcvd: 28
---
Replaces #22197.
Fixes RHBZ#
2039854 (https://bugzilla.redhat.com/show_bug.cgi?id=
2039854).
(cherry picked from commit
3b2ac14ac45bef01cf489c3231b868936866444b)
Yu Watanabe [Sun, 23 Jan 2022 21:06:55 +0000 (06:06 +0900)]
dns-domain: re-introduce dns_name_is_empty()
(cherry picked from commit
7bdf41983044268b4bc2f9d34462db7f89ba284a)
Frantisek Sumsal [Thu, 17 Feb 2022 13:02:04 +0000 (14:02 +0100)]
packit: drop unnumbered patches as well
(cherry picked from commit
729c6b6af8e3cef259b80746f7f7f10cc63d309f)
Yu Watanabe [Wed, 16 Feb 2022 15:49:21 +0000 (00:49 +0900)]
sd-dhcp-server: do not offer server address
The server address may be in the pool.
(cherry picked from commit
9e0cb8b61f46a2164290a2380db89e45876b370c)
Yu Watanabe [Thu, 27 Jan 2022 17:25:37 +0000 (02:25 +0900)]
sd-dhcp-server: do not assign address reserved for static leases to non-matching clients
This fix the root cause of the issue #22253.
(cherry picked from commit
bd1a3eb65b9e308028c18e1ed7ffde474a3b1244)
Yu Watanabe [Thu, 27 Jan 2022 18:50:57 +0000 (03:50 +0900)]
sd-dhcp-server: explicitly refuse when conflicting address is requested
(cherry picked from commit
7e98fe05a0b9cdfdad326f34189cd37257d9d4e4)
Yu Watanabe [Thu, 27 Jan 2022 18:50:16 +0000 (03:50 +0900)]
sd-dhcp-server: do not assign an address from pool when a static lease for the client ID exists
(cherry picked from commit
e2ba408084935fffa0c73007528de7babf9309c8)
Yu Watanabe [Thu, 27 Jan 2022 17:10:23 +0000 (02:10 +0900)]
sd-dhcp-server: rename get_pool_offset() -> address_is_in_pool()
As, the value of pool_offset is not used.
(cherry picked from commit
5cc8be890db8611b9003304769ec82c3548be6e1)
Yu Watanabe [Thu, 27 Jan 2022 17:14:47 +0000 (02:14 +0900)]
sd-dhcp-server: rename server_send_nak() -> server_send_nak_or_ignore()
And logs error in the function.
(cherry picked from commit
eb5bff9c9de2bd218f5ac431e3aead4b5747ecd9)
Yu Watanabe [Wed, 26 Jan 2022 15:17:23 +0000 (00:17 +0900)]
sd-dhcp-server: set DHCPLease::server before hashmap_put()
Otherwise, if the second push is failed, then the first hashmap contains
dirty entry.
Also, this makes hashmap_remove_value() used when removing leases to
make not wrong lease is removed from the hashmap.
Note, this just hide the root cause of the issue #22253, which will be
fixed in later commit.
Fixes #22253.
(cherry picked from commit
8a7d048d1ddb8916482f1422405d3e0e4bccb279)
Frantisek Sumsal [Tue, 22 Feb 2022 13:43:40 +0000 (14:43 +0100)]
ci: fix clang-13 installation
For some reason Ubuntu Focal repositories now have `llvm-13` virtual
package which can't be installed, but successfully fools our check,
resulting in no clang/llvm being installed...
```
$ apt show llvm-13
Package: llvm-13
State: not a real package (virtual)
N: Can't select candidate version from package llvm-13 as it has no candidate
N: Can't select versions from package 'llvm-13' as it is purely virtual
N: No packages found
$ apt install --dry-run llvm-13
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package llvm-13 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'llvm-13' has no installation candidate
```
(cherry picked from commit
b491d74064f9d5e17a71b38b014434237169a077)
Evgeny Vereshchagin [Sun, 26 Dec 2021 01:11:00 +0000 (01:11 +0000)]
ci: replace apt-key with signed-by
to limit the scope of the key to apt.llvm.org only.
This is mostly inspired by https://blog.cloudflare.com/dont-use-apt-key/
(cherry picked from commit
bfa6bd1be098adc4710e1819b9cd34d65b3855da)
Yu Watanabe [Sun, 20 Feb 2022 02:23:18 +0000 (11:23 +0900)]
network: dhcp-pd: fix prefix length of address assigned to upstream interface
This effectively revert
ab0c82d9f749cc397a6b7e0327ddb2c08cd7d7e0.
I have no idea why I did that...
Fixes #22559.
(cherry picked from commit
38488babe791639860068905177a415822b6b98b)
Yu Watanabe [Fri, 11 Feb 2022 00:43:16 +0000 (09:43 +0900)]
resolve: add reference of the original bus message to the aux queries
Otherwise, the error in aux queries cannot be replied.
Fixes #22477.
(cherry picked from commit
08275791d85a1852e79951212f6cbbc727db789a)
Yu Watanabe [Fri, 11 Feb 2022 00:49:13 +0000 (09:49 +0900)]
resolve: refuse AF_UNSPEC when resolving address
Fixes #22480.
(cherry picked from commit
0234f0c0531682e7f28a4ef51852c102c6e97267)
Yu Watanabe [Fri, 18 Feb 2022 05:06:31 +0000 (14:06 +0900)]
udev-util: add parentheses to make coverity silent
Fixes CID#
1474365.
(cherry picked from commit
9fa31df62dd504e8f3e43710df504a467ed430fa)
Yu Watanabe [Wed, 16 Feb 2022 20:24:26 +0000 (05:24 +0900)]
network: call ethtool after link is initialized by udevd
Fixes #22538.
(cherry picked from commit
e1658632aefc963c4a651de433cceb3a9512afd6)
Yu Watanabe [Thu, 17 Feb 2022 09:55:24 +0000 (18:55 +0900)]
network: use udev_available() where applicable
(cherry picked from commit
82f52245baa2fe26f1de7b50a036d3746deb7df1)
Yu Watanabe [Thu, 17 Feb 2022 09:47:26 +0000 (18:47 +0900)]
udev-util: introduce udev_available() helper function
(cherry picked from commit
f92c5bb18cee41d48b95d61a2a2dc613203844ca)
Richard Neill [Wed, 2 Feb 2022 18:18:46 +0000 (18:18 +0000)]
virt: Fix Xen Dom0 detection logic to no longer report as VM
Fixes regression introduced in
599be274c13c503806c85073d7beb1a155ac27bd
Moving the Xen check before the CPUID check, in order to handle the case where
a Xen domain is nested within a hypervisor which can be detected by via the
CPUID check, had an unintended consequence of causing Dom0 to report as a Xen
VM when it is not nested.
This patch stops further checks once it has been determined that Dom0 is not
nested within another hypervisor, meaning that the non-nested case matches its
previous logic (where it does not report as a VM).
Also, tidy the conditionals for the Xen and UML checks by removing handling of
a VIRTUALIZATION_VM_OTHER result, which has no code path.
Fixes #22511
(cherry picked from commit
ea583ed5a366cf51b80bd363db95e828a25ec27e)
Luca Boccassi [Tue, 15 Feb 2022 10:21:49 +0000 (10:21 +0000)]
Partially revert "sd-dhcp-server: refuse too large packet to send"
This test fails on this branch:
949/1228 fuzz-dhcp-server-relay-message_clusterfuzz-testcase-minimized-fuzz-dhcp-server-relay-message-4972399731277824_address,undefined FAIL 0.00s (exit status 127)12:43
--- command ---12:43
01:47:36 UBSAN_OPTIONS='print_stacktrace=1:print_summary=1:halt_on_error=1' /usr/bin/env /tmp/autopkgtest-lxc.cl7c6fs0/downtmp/build.X6Z/src/build-deb/fuzz-dhcp-server-relay-message:address,undefined /tmp/autopkgtest-lxc.cl7c6fs0/downtmp/build.X6Z/src/test/fuzz/fuzz-dhcp-server-relay-message/clusterfuzz-testcase-minimized-fuzz-dhcp-server-relay-message-
497239973127782412:43
--- stderr ---12:43
/usr/bin/env: ‘/tmp/autopkgtest-lxc.cl7c6fs0/downtmp/build.X6Z/src/build-deb/fuzz-dhcp-server-relay-message:address,undefined’: No such file or directory
This partially reverts commit
76bcd1d6d26ebe0424e2c5edc7f5a31a82ae3a7c.
Luca Boccassi [Tue, 15 Feb 2022 10:20:34 +0000 (10:20 +0000)]
Revert "tests: add a file triggering a memory leak in dhcp_lease_parse_search_domains"
The test fails on this branch:
948/1228 fuzz-dhcp-client_minimized-from-555a2b073b8d208655b68c294f8dfd592a11e50a_address,undefined FAIL 0.00s (exit status 127)12:43
--- command ---12:43
01:47:36 UBSAN_OPTIONS='print_stacktrace=1:print_summary=1:halt_on_error=1' /usr/bin/env /tmp/autopkgtest-lxc.cl7c6fs0/downtmp/build.X6Z/src/build-deb/fuzz-dhcp-client:address,undefined /tmp/autopkgtest-lxc.cl7c6fs0/downtmp/build.X6Z/src/test/fuzz/fuzz-dhcp-client/minimized-from-
555a2b073b8d208655b68c294f8dfd592a11e50a12:43
--- stderr ---12:43
/usr/bin/env: ‘/tmp/autopkgtest-lxc.cl7c6fs0/downtmp/build.X6Z/src/build-deb/fuzz-dhcp-client:address,undefined’: No such file or directory
This reverts commit
87728a590ad82391e76a275024c9039625ff2b67.
Luca Boccassi [Tue, 8 Feb 2022 13:19:52 +0000 (13:19 +0000)]
meson: disable export-dbus-interfaces target when cross-compiling
ERROR:
Cannot use target systemd as a generator because it is built for the
host machine and no exe wrapper is defined or needs_exe_wrapper is
true. You might want to set `native: true` instead to build it for
the build machine.
(cherry picked from commit
0628d48ec2af1c25bede6d94ae49107b17651b68)
Conflicts:
meson.build
Jan Janssen [Fri, 11 Feb 2022 12:17:23 +0000 (13:17 +0100)]
boot: Correctly check the return value of CheckEvent
Fixes: #22428
(cherry picked from commit
ac3979abd7a38725b66c1ce0607fa905b3a3d782)
Yu Watanabe [Thu, 10 Feb 2022 09:04:34 +0000 (18:04 +0900)]
test-network: add missing tests for bridge properties
(cherry picked from commit
b6d5dab7bbb8ecf4ce1229840085daa15ab4cf57)
Yu Watanabe [Thu, 10 Feb 2022 08:47:14 +0000 (17:47 +0900)]
network: bridge: fix endian of vlan protocol
Fixes #22469.
(cherry picked from commit
6eb35be8e0fa5f1f00dddd558cf4dc3642d9e53e)
Daan De Meyer [Mon, 7 Feb 2022 20:19:29 +0000 (20:19 +0000)]
journal: Improve handling of corruption during upwards entry iteration
If we're going upwards in the journal file during entry iteration and we
can't reach the current entry due to corruption, start iterating upwards
from the last reachable entry array. This is equivalent to skipping
all entries in the array that can't be reached anymore.
Fixes #22431
(cherry picked from commit
952d1e784a0ad47e0c2c832d28299987c3c25529)
Daan De Meyer [Mon, 7 Feb 2022 20:15:07 +0000 (20:15 +0000)]
journal: Fix upwards iteration of entry items in case of corruption
8d801e35cb155faa08235a5af8b4d6ad60715837 didn't take into account
upwards iteration of entry items when we're working on a corrupted
journal file. Instead of moving to the previous entry array, we'd
always move to the next array, regardless of the iteration direction.
To fix this, we introduce bump_entry_array() that moves to the next
or previous entry array depending on the given direction. Since the
entry array chains are singly linked lists, we have to start iterating
from the front to find the previous array. We only reach this logic
if we're working on a corrupted journal file so being slow here shouldn't
matter too much.
(cherry picked from commit
aa00163d79309f9873512a4cc14a48c05fee7c65)
Yu Watanabe [Sat, 5 Feb 2022 13:31:06 +0000 (22:31 +0900)]
resolve: reuse timer event source for DnsQuery
If the query get CNAME or DNAME, then the query will be restarted.
Even in that case, previously, the event source was freed and allocated
again. Let's slightly optimize it.
(cherry picked from commit
ecdfb9a1ae0a09d22a976e2ca0dc99aacc6b9d1f)
Yu Watanabe [Sat, 5 Feb 2022 13:04:42 +0000 (22:04 +0900)]
resolve: use _cleanup_ attribute for freeing DnsQuery
(cherry picked from commit
c704288c473fa08820566fdb16c38726d24db026)
Yu Watanabe [Sat, 5 Feb 2022 13:03:19 +0000 (22:03 +0900)]
resolve: fix possible memleak
Fortunately, unlike the issue fixed in the previous commit, the memleak
should be superficial and not become apparent, as the queries handled
here are managed by the stub stream, and will be freed when the stream
is closed.
Just for safety, and slightly reducing the runtime memory usage by the
stub stream.
(cherry picked from commit
fe8c5ce615ee2123f17b1f0b3728c439e19e4b5b)
Yu Watanabe [Sat, 5 Feb 2022 12:37:01 +0000 (21:37 +0900)]
resolve: fix potential memleak and use-after-free
When stub stream is closed early, then queries associated to the stream
are freed. Previously, the timer event source for queries may not be
disabled, hence may be triggered with already freed query.
See also dns_stub_stream_complete().
Note that we usually not set NULL or zero when freeing simple objects.
But, here DnsQuery is large and complicated object, and the element may
be referenced in subsequent freeing process in the future. Hence, for
safety, let's set NULL to the pointer.
(cherry picked from commit
73bfd7be042cc63e7649242b377ad494bf74ea4b)
Lennart Poettering [Tue, 1 Feb 2022 11:06:21 +0000 (12:06 +0100)]
util: another set of CVE-2021-4034 assert()s
It's a good idea that we validate argc/argv when we are supposed to
store them away.
(cherry picked from commit
007e03b284e8ffc0b92edb2122cd9d2d16f049ef)
Luca Boccassi [Thu, 27 Jan 2022 14:10:34 +0000 (14:10 +0000)]
core: do not attempt to add 'private' symlinks when RootImage/RootDirectory are used
A bind mount is added directly from private on the host to the actual
destination directory, no need for the symlinks (which cannot be created
as the bind mount happens first and creates the target as an actual directory)
Fixes https://github.com/systemd/systemd/issues/22264
(cherry picked from commit
3fa80e5e75a98ef6f9a84b01770b71a1774478dc)
Conflicts:
test/units/testsuite-50.sh
Luca Boccassi [Thu, 27 Jan 2022 14:08:44 +0000 (14:08 +0000)]
core: add clearer debug log when setting up ExecDirectories symlinks fails
(cherry picked from commit
6d7c999ab5958d6f1f192e7d0a63b8c330a077cb)
Luca Boccassi [Thu, 27 Jan 2022 14:08:05 +0000 (14:08 +0000)]
test: use mksquashfs -noappend
Makes the setup idempotent, as mksquashfs by default attempts to
append to an existing image
(cherry picked from commit
392d46d7a8f78169ff6b0d2740f82924e6fdc878)
Luca Boccassi [Thu, 27 Jan 2022 14:07:20 +0000 (14:07 +0000)]
test: rename service used in TEST-29-PORTABLE to avoid conflict
There's an app0.service in the extension app0.raw, so don't use the same
name for a unit in minimal.raw
(cherry picked from commit
d76f0de746f4ee7c9014f42b531ba0449b834214)
Thomas Haller [Thu, 3 Feb 2022 17:55:18 +0000 (18:55 +0100)]
sd-dhcp6-client: fix sending prefix delegation request during rebind
Fixes an assertion failure "pd->type == SD_DHCP6_OPTION_IA_PD" in dhcp6_option_append_pd().
Something similar was done in commit
26a63b81322a ('sd-dhcp6-client: Fix
sending prefix delegation request (#17136)'). The justification is
probably the same.
(cherry picked from commit
58da18251f468de9de4cc7b36804c924e2fd4421)
Yu Watanabe [Wed, 2 Feb 2022 06:08:18 +0000 (15:08 +0900)]
test: add a test for mkdir_p()
(cherry picked from commit
6f6b017b9bc69df3f3e308c36c95597002ce6e29)
Conflicts:
src/test/meson.build
Yu Watanabe [Wed, 2 Feb 2022 05:20:48 +0000 (14:20 +0900)]
mkdir: allow to create directory whose path contains symlink
Fixes a regression caused by
3008a6f21c1c42efe852d69798a2fdd63fe657ec.
Before the commit, when `mkdir_parents_internal()` is called from `mkdir_p()`,
it uses `_mkdir()` as `flag` is zero. But after the commit, `mkdir_safe_internal()`
is always used. Hence, if the path contains a symlink, it fails with -ENOTDIR.
To fix the issue, this makes `mkdir_p()` calls `mkdir_parents_internal()` with
MKDIR_FOLLOW_SYMLINK flag.
Fixes #22334.
(cherry picked from commit
5117059ee9f84ed2fd37801ec0b90473db475422)