1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-21 18:03:41 +03:00

58389 Commits

Author SHA1 Message Date
Antonio Alvarez Feijoo
d89e9993d2 dissect: add missing --umount to the help output
(cherry picked from commit 1b967529d225077f063d10fbc647f55d6c3aae0e)
2022-10-24 20:49:35 +02:00
Zbigniew Jędrzejewski-Szmek
087cbfd936 coredump: avoid deadlock when passing processed backtrace data
We would deadlock when passing the data back from the forked-off process that
was doing backtrace generation back to the coredump parent. This is because we
fork the child and wait for it to exit. The child tries to write too much data
to the output pipe, and and after the first 64k blocks on the parent because
the pipe is full. The bug surfaced in Fedora because of a combination of four
factors:
- 87707784c70dc9894ec613df0a6e75e732a362a3 was backported to v251.5, which
  allowed coredump processing to be successful.
- 1a0281a3ebf4f8c16d40aa9e63103f16cd23bb2a was NOT backported, so the output
  was very verbose.
- Fedora has the ELF package metadata available, so a lot of output can be
  generated. Most other distros just don't have the information.
- gnome-calendar crashes and has a bazillion modules and 69596 bytes of output
  are generated for it.

Fixes https://bugzilla.redhat.com/show_bug.cgi?id=2135778.

The code is changed to try to write data opportunistically. If we get partial
information, that is still logged. In is generally better to log partial
backtrace information than nothing at all.

(cherry picked from commit 076b807be472630692c5348c60d0c2b7b28ad437)
2022-10-24 20:48:40 +02:00
Zbigniew Jędrzejewski-Szmek
ab587aaf8e shared/json: use different return code for empty input
It is useful to distinguish if json_parse_file() got no input or invalid input.
Use different return codes for the two cases.

(cherry picked from commit 87a16eb8b54002a49f12944fc09ce45d0cbadf45)
2022-10-24 20:48:37 +02:00
Zbigniew Jędrzejewski-Szmek
219272f7b2 shared/json: allow json_variant_dump() to return an error
(cherry picked from commit 7922ead507e0d83e4ec72a8cbd2b67194766e58c)
2022-10-24 20:48:34 +02:00
Lennart Poettering
d1066f33b5 man: document restrictions on naming interfaces
Let's document that "." is a bad choice of character when naming
interfaces. Let's also document the hard restrictions we make when
naming interfaces.

Result of the mess that is #25052.

(cherry picked from commit 8f598a463571608cbeb1b562afcadf2db335a530)
2022-10-24 20:48:11 +02:00
Daan De Meyer
e2a07cdac6 qrcode-util: Add support for libqrencode 3.0
They didn't actually change API between major versions, so let's
support the previous version as well so we can add CentOS 8 Stream
back to CI.

(cherry picked from commit 3f5225d7f301f70c9418122cf1e1989ccb33ea76)
2022-10-24 20:45:34 +02:00
Celeste Liu
8be601f7ef seccomp: add riscv_flush_icache to allow list
This system call is harmless because it only enforces ordering between stores
and instruction cache fetch.

fixed #24991
Related: https://github.com/felixonmars/archriscv-packages/issues/1840

Signed-off-by: Celeste Liu <CoelacanthusHex@gmail.com>
(cherry picked from commit 09925036cf2b5a5c4cf680422a38c427ca692cd6)
2022-10-24 20:44:57 +02:00
Michael Biebl
3028e05955 logind: fix getting property OnExternalPower via D-Bus
The BUS_DEFINE_PROPERTY_GET_GLOBAL macro requires a value as third
argument, so we need to call manager_is_on_external_power(). Otherwise
the function pointer is interpreted as a boolean and always returns
true:

```
$ busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager OnExternalPower
b true
$ /lib/systemd/systemd-ac-power  --verbose
no
```

Thanks: Helmut Grohne <helmut@subdivi.de>
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1021644
(cherry picked from commit 63168cb517a556b2f4f175b365f5a4b4c7e85150)
v251.6
2022-10-13 23:00:28 +02:00
Zbigniew Jędrzejewski-Szmek
5da595db39 shared/condition: avoid nss lookup in PID1
PID 1 is not allowed to do nss lookups because this may take a long time or
even deadlock.

While at it, the comparisons are reordered to do the "easy" comparisons which
only require a string comparison first. Delay parsing of the UID until it is
really necessary. The result is the same, because we know that "root" and
"nobody" parse as valid.

(cherry picked from commit 734f96b8490a2c48712ff6754a84fcaeac3d53c1)
2022-10-13 23:00:15 +02:00
Yu Watanabe
40053e60f5 test: add more tests for StateDirectory= with DynamicUser=
This also moves the check for writable paths from test-execute to TEST-34.

Closes #10337.

(cherry picked from commit f01f70a9a3f3609c0c8bdbaa4b0b4abbb2b43993)
2022-10-13 22:59:07 +02:00
Yu Watanabe
0ba2e4bb69 core: do not create symlink to private directory if parent already exists
The very basic functinality of StateDirectory= or friends is creating
specified directories. That should work if one entry is a subdirectory
of another. However, it does not when combined with DynamicUser=yes.

To support such case, this adds ExecDirectoryItem.only_create flag, and
if it is set PID1 only create private directory, and not create the symlink
to the private directory.

Fixes #24783.

(cherry picked from commit a2ab603cc42e1484c799f76a233b077c17db91cb)
2022-10-13 22:59:05 +02:00
Yu Watanabe
1de3cb97ee core: make exec_directory_add() extends existing symlinks
Follow-up for 211a3d87fb1fe971dc42a47b4c5cc167def8ab4e.

Previously, although ExecDirectoryItem.symlinks is strv, it always
contains at most one symlink.

(cherry picked from commit 564e5c987877f7e481d896c7fd82e8e5a69addc2)
2022-10-13 22:59:03 +02:00
Yu Watanabe
d7b83b9986 sd-ndisc: ignore failure in sending solicitation
Even if a bonding master interface has carrier, the underlying slave
interfaces may not. In such a case, sending solicitation fails with
-ENOBUS. Here, let's unconditionally ignore errors, as anyway we will
send a solicitation later.

Fixes #24717.

(cherry picked from commit 852bf93826b151be8b85d894071d95eb3b0d4498)
2022-10-13 22:56:46 +02:00
Zbigniew Jędrzejewski-Szmek
e0ba044985 analyze: add forgotten return statement
We would fail with an assert in sd_bus_message_enter_container() afterwards.

(cherry picked from commit 5475e963c5e6ade35404384ba03caf79cb1bc2e5)
2022-10-13 22:56:23 +02:00
Zbigniew Jędrzejewski-Szmek
40742ac74f basic/log: include the log syntax callback in the errno protection block
In general, log_syntax_internal() must keep errno unchanged. But the
call to log_syntax_callback() was added outside of the block protected
by PROTECT_ERRNO.

(cherry picked from commit 6b7834fe5de3de690e6efb9467c61691c4b2f30f)
2022-10-13 22:56:01 +02:00
Zbigniew Jędrzejewski-Szmek
3e38c39600 logind: do not emit beep in wall messages
Those may go via the PC speaker, which is annoying and unexpected.
Most people have it off, so this doesn't work reliably anyway, so we can
disable it without much loss.

Fixes #23520.

(cherry picked from commit ef3458cd5dc8d5b400c9abbea92986c43aef18cc)
2022-10-13 22:55:33 +02:00
Yu Watanabe
bf13ffec59 udev: drop assertion which is always false
Fixes a bug introduced by 67c3e1f63a5221b47a8fea85ae421671f29f3b7e.

Fixes #24945.

(cherry picked from commit 6209bbbd4b1c9ed2886028ab2ee3df0a7d0e2494)
2022-10-13 22:54:00 +02:00
anarcat
78a8e938e4 man/shutdown: document how to switch to single-user mode
Before Debian switched to systemd, `shutdown now` would reset the system into
single user mode, doing roughly the equivalent of `telinit 1`.

Now, systemd's `shutdown` command does not behave that way; it defaults to
`poweroff` which might be confusing for users (like me) used to the previous
method.

Because I don't use the command often, I keep being stumped by this behavior,
and every time I look at the `shutdown(1)` manpage, I don't understand why I
can't find what I am looking for. This patch should make sure that people like
me find their way back to some sort of reason.

Maybe the *proper* way to fix this would be to restore the more classic
behavior, but I'm definitely not going to climb that hill. Besides, I clearly
remember the time I found out about the `shutdown` command and was *really*
confused when it brought me back to a command-line prompt. That was really
counter-intuitive and I find that change to actually be a good thing. So I'm
not proposing to change this behavior, merely document it better.

I originally added this to the `-P` option but it was suggested adding a new
`COMPATIBILITY` section instead, where other such issues could be added.

The `COMPATIBILITY` section is not actually officially documented. `man(1)`
talks about a `CONFORMING TO` section, but `shutdown(1)` is not
POSIX (`shutdown(2)` is, of course), so there's no actual standard on how this
should work.

The other option I considered was to add a `BUGS` section, but that seemed to
inflammatory, and definitely counter-productive.

(cherry picked from commit 9aafd310cc42716a923e0d40e56db7952e16a9a3)
2022-10-13 22:53:23 +02:00
Dominique Martinet
9de8a5d5d0 libbpf: add compat helpers for libbpf down to 0.1.0
- new symbols are available from libbpf 0.6.0 so could be used with
libbpf.so.0, but we're sure the old symbols will be there and this
simplifies code
- detection at runtime should always work, regardless of whether systemd
has been compiled with older or newer libbpf and runs with older or newer
libbpf

(cherry picked from commit 87e462f71361a47b154865dc14032a27580dd4cb)
2022-10-13 22:52:51 +02:00
Daan De Meyer
9d5d267ab3 Try to load libbpf.so.1 as well
libbpf had a soname bump. Our usage of libbpf is compatible with
both libbpf.so.0 and libbpf.so.1, so let's try to load from both.

(cherry picked from commit 5a967e28873816806a8f1e7c6c7d1ac28369f8b9)
2022-10-13 22:52:05 +02:00
Daan De Meyer
8cc2387b03 libbpf: Remove use of deprecated APIs
(cherry picked from commit 6b8085db68aef9ce7ea3f628a059ce80eaa3d9f3)
2022-10-13 22:51:59 +02:00
Arnaud Ferraris
4abc5b2cfe repart: always honour --discard=no
Currently, even if `--discard=no` is passed to `systemd-repart`, the
`context_discard_gap_after()` function still runs normally, discarding
e.g. all blocks between the GPT and the start of the first partition.

This can lead to issues on some embedded devices, where this space
holds the bootloader and shouldn't be modified (creating a protective
partition there is not always possible due to the specifics of the boot
process of some ARM-based SoC's).

This commit ensures passing `--discard=no` would be enough to ensure
the bootloader isn't wiped in such cases.

Signed-off-by: Arnaud Ferraris <arnaud.ferraris@gmail.com>
(cherry picked from commit 5113436b054aea7185a0287590aa64486fec3cec)
2022-10-13 22:49:22 +02:00
Aleksey Vasenev
b3d5724bfc ata_id: Fixed getting Response Code from SCSI Sense Data (#24921)
The Response Code is contained in the first byte of the SCSI Sense Data.
Bit number 7 is reserved or has a different meaning for some Response Codes
and is set to 1 for some drives.

(cherry picked from commit 2be1ae54badf7a3a12908a8094ebaba8f91887ca)
2022-10-13 22:49:08 +02:00
Jacek Migacz
e91ea65aba resolve: unsupported DNSSEC algorithms are considered INSECURE; not BOGUS
Resolves: #19824
(cherry picked from commit 1ca3600120c6db775f0fe357f6fc6cb3a13f1cc6)
2022-10-13 22:42:25 +02:00
Jonas Kümmerlin
73db7d9932 generator: skip fsck if fsck command is missing
This is useful for systems which don't have any fsck.

We already skip emitting the fsck dependency when the fsck.$fstype helper
is missing, but fstab-generator doesn't necessarily know the fstype when
handling the root= parameter.

Previously, systemd-fsck was started for these mounts and then exited
immediately because it couldn't find the fsck.$fstype helper.

(cherry picked from commit 13556724379a52951eb1977c2b7989a0159fd77c)
2022-10-13 22:40:47 +02:00
Yu Watanabe
80dc4425db udevadm: do not try to find device unit when a path like string is provided
Otherwise, we provide misleading error message.
Before:
---
$ udevadm info /sys/class/foo
Bad argument "/sys/class/foo", expected an absolute path in /dev/ or /sys/ or a unit name: Invalid argument
---
After:
---
$ udevadm info /sys/class/foo
Unknown device "/sys/class/foo": No such device
---

(cherry picked from commit 4273a041f1ff735606f656ff6e60991d38568ba8)
2022-10-13 22:37:23 +02:00
Lennart Poettering
7add2f21f1 resolved: don't access sshfp fields from tlsa printer
(cherry picked from commit 411d095d7939f78424a1337d638393819fe1bbfd)
2022-10-13 22:36:35 +02:00
Lennart Poettering
9d9a970ad7 resolved: fix parameter reuse in DNS_ANSWER_FOREACH_ITEM() iterator macro
(cherry picked from commit 63fe457c1b4903d85d02216c8019ae8445e2b3dd)
2022-10-13 22:36:11 +02:00
Yu Watanabe
913d22cf8d kernel-install: do not fail if $layout is not "bls"
Fixes #24836.

(cherry picked from commit 46f347ada33bd5a16cab3d796054299105b71481)
2022-10-13 22:34:53 +02:00
Topi Miettinen
25facc6e7f units: udev: partially emulate ProtectClock=
Drop CAP_SYS_TIME and CAP_WAKE_ALARM capabilities and block clock-related
system calls. Update TODO.

(cherry picked from commit 75723d31a678bdd6b9d0160834e54dc09e3dedd1)
2022-10-13 22:32:55 +02:00
Lennart Poettering
2e6e0498aa nspawn: fix two error strings
(cherry picked from commit c941b650753f8ceada80a1df70fe8285a84995bc)
2022-10-13 22:15:33 +02:00
David Edmundson
5befffa69a xdg-autostart-service: expand tilde in Exec lines
In typical desktop file parsing it is expected that "~" expands to a
home directory.

Users may write an autostart file with "Exec=myCoolService
~/.someSpecialConfig" which worked before the systemd migration.

(cherry picked from commit 8c0a6a96fe04f97966b86ec91ee4502f5d4fa8d8)
2022-10-13 22:14:17 +02:00
j00512545
4cb75191c4 fix typo in log
(cherry picked from commit 365c2885f01371e547ae880ebfd920131b436735)
2022-10-13 22:13:06 +02:00
Heinrich Schuchardt
738eca5e05 meson: add libatomic dependency
Building with GCC 12.2 and binutils 2.39 fails on riscv64 Ubuntu Kinetic
with:

FAILED: systemd-oomd
/usr/bin/ld: systemd-oomd.p/src_oom_oomd-util.c.o:
in function `oomd_cgroup_context_acquire':
build/../src/oom/oomd-util.c:415:
undefined reference to `__atomic_exchange_1'

We have to link with -latomic.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
(cherry picked from commit 132c73b57ad1d363e97e1f4720f0e920826f34e1)
2022-10-13 22:12:45 +02:00
David Edmundson
c40fa78968 xdg-autostart-service: Use common boolean parser
Technically the desktop entry specification says value should be the
string "true" or "false". Pragmatically every desktop has their own
parsing rules which are typically less strict on how to interpret other
values.

This caused some regressions downstream when we switched to the
xdg-autostart-generator where existing handmade files contained values
with "True" or "False".

(cherry picked from commit 38429cb1e3f37c298aa20ab25d644c87a23dd2e2)
2022-10-13 22:04:08 +02:00
Ansgar Burchardt
654ae8c1e4 base-filesystem.c: add trailing zero byte for s390x entry
(cherry picked from commit 4167e2135e0df7ce21820107e73492bb749280b9)
v251.5
2022-10-01 19:05:55 +02:00
Guillaume W. Bres
e4a19eef33 basic/missing_loop.h: fix missing lo_flags LO_FLAGS_DIRECT_IO
(cherry picked from commit b3fe33ff52ece458a5b990a4a68d59aef7cae10b)
2022-10-01 19:05:55 +02:00
Yu Watanabe
24238be484 mount-util: fix error code
If multiple service is starting simultaneously with a shared image,
then one of the service may fail to create a mount node:

systemd[695]: Bind-mounting /usr/lib/os-release on /run/systemd/unit-root/run/host/os-release (MS_BIND|MS_REC "")...
systemd[696]: Bind-mounting /usr/lib/os-release on /run/systemd/unit-root/run/host/os-release (MS_BIND|MS_REC "")...
systemd[695]: Failed to mount /usr/lib/os-release (type n/a) on /run/systemd/unit-root/run/host/os-release (MS_BIND|MS_REC ""): No such file or directory
systemd[696]: Failed to mount /usr/lib/os-release (type n/a) on /run/systemd/unit-root/run/host/os-release (MS_BIND|MS_REC ""): No such file or directory
systemd[695]: Bind-mounting /usr/lib/os-release on /run/systemd/unit-root/run/host/os-release (MS_BIND|MS_REC "")...
systemd[696]: Failed to create destination mount point node '/run/systemd/unit-root/run/host/os-release': Operation not permitted
systemd[695]: Successfully mounted /usr/lib/os-release to /run/systemd/unit-root/run/host/os-release

The function apply_one_mount() in src/core/namespace.c gracefully
handles -EEXIST from make_mount_point_inode_from_path(), but it erroneously
returned -EPERM previously. This fixes the issue.

Fixes one of the issues in #24147, especially reported at
https://github.com/systemd/systemd/issues/24147#issuecomment-1236194671.

(cherry picked from commit b6ca2b281eff254dce2293990360e799af806ad4)
2022-10-01 19:05:54 +02:00
Yu Watanabe
1b1ad8c79f udev: certainly restart event for previously locked device
If udevd receives a uevent for a locked block device, then the event
is requeued. However, the queued event will be processed only when at
least one sd_event_source is processed. Hence, if udevd has no event
under processing, or receives no new uevent, etc., then the requeued
event will be never processed.

Follow-up for 400e3d21f8cae53a8ba9f9567f244fbf6f3e076c.

Fixes #24439.

(cherry picked from commit 4f294ffdf18ab9f187400dbbab593a980e60be89)
2022-10-01 19:05:54 +02:00
Jan Janssen
7dacfb3fb4 stub: Use EfiLoaderCode for kernel memory
Fixes: #24237
(cherry picked from commit 79a7ef89aa5dd9d99a904f1253bad7512d3feee5)
2022-10-01 19:05:54 +02:00
Yu Watanabe
eaeaf4f6ef network: do not silently stop to process configuration on activation failure
Previously, if activation failed, link did not enter the failed state,
but still Link.activated flag not set. Hence, nothing processed even if
the interface is manually brought up later.

Partially fixes #23649.

(cherry picked from commit b05e52000b4eee764b383cc3031da0a3739e996e)
2022-10-01 19:05:54 +02:00
David Rheinsberg
bb803856bc bus: use inline trace argument for ANONYMOUS auth
Rather than using a separate DATA round to transmit the trace-string of
the ANONYMOUS authentication scheme, transmit it inline as argument.
This requires a refactor of the client-side SASL parser, as we now have
a different set of replies depending on the mode used.

This fixes an issue where libdbus-1 does not query for trace-strings if
not transmit inline as AUTH-ANONYMOUS argument. It is unclear from the
wording of the spec whether this is a violation by libdbus-1. However,
we can work around it by simply changing our mode of transmittal.

(cherry picked from commit 347f48246f7014f2e266b1fcb4527edee93037da)
2022-10-01 19:05:54 +02:00
igo95862
6349062326 Fix ObjectManager interface emitted for non-manager objects
(cherry picked from commit b283d50240afd50835a9c5898d41af3267c8426b)
2022-10-01 19:05:54 +02:00
igo95862
c90ab07fa0 test-bus-objects: Test interfaces added/removed signal interfaces
`org.freedesktop.DBus.ObjectManager` should only be emitted if
object in question has ObjectManager attached.

(cherry picked from commit 19b581466a33820064a95aa9bd06c57e23dbc571)
2022-10-01 19:05:54 +02:00
igo95862
e32fe1b457 Fix GetManagedObjects returning ObjectManager interface for non-manager objects
(cherry picked from commit 2ccd0828fc1fd5921637f7f178f41c710a8a26c7)
2022-10-01 19:05:54 +02:00
igo95862
efd8e39f4a test-bus-objects: Test GetManagedObjects interfaces are correct
Objects without ObjectManager should not have
`org.freedesktop.DBus.ObjectManager` interface.

Object with ObjectManager should do.

Also added ASSERT_SE_NONNEG and ASSERT_NONNEG macros.

(cherry picked from commit 724e13b346990be85c4bc332c78f29ed7ce83121)
2022-10-01 19:05:54 +02:00
Zbigniew Jędrzejewski-Szmek
344efd022a coredump: when parsing json, optionally copy the string first
(cherry picked from commit 87707784c70dc9894ec613df0a6e75e732a362a3)
2022-10-01 19:05:54 +02:00
Christian Hesse
de08edca17 systemctl: color ignored exit status in yellow, not red
If the executable path is prefixed with "-", an exit code of the command
normally considered a failure (i.e. non-zero exit status or abnormal exit
due to signal) is recorded, but has no further effect and is considered
equivalent to success.

Let's honor this with `systemctl status`, and color ignored exit status
in yellow, not red.

(cherry picked from commit e879434df550c6dcfc02f23e613f4dda7f741089)
2022-10-01 19:05:54 +02:00
Lennart Poettering
1531a496e3 manager: make clear internal Dump() logic is debugging only.
(cherry picked from commit acf2de52171106f7084e9410f4cc838b9a4183dd)
2022-10-01 19:05:54 +02:00
Lennart Poettering
c4fd38f7d2 man: document the Dump() calls of the PID 1 D-Bus interface, and what they are
(cherry picked from commit 0df8512124b05ed2d3be1537a4023e89ec33f0f7)
2022-10-01 19:05:54 +02:00