]> git.ipfire.org Git - thirdparty/systemd.git/log
thirdparty/systemd.git
2 years agojournal-remote: fix memory leak on initialization error 25779/head
Luca Boccassi [Sun, 18 Dec 2022 10:58:37 +0000 (10:58 +0000)] 
journal-remote: fix memory leak on initialization error

Follow-up for f12b399dd6362a03379cb769954ebfb9972236ed from
https://github.com/systemd/systemd/pull/25076

CID#1501550

2 years agojournal-remote: fix initialization of vacuum metrics
Luca Boccassi [Sun, 18 Dec 2022 10:51:36 +0000 (10:51 +0000)] 
journal-remote: fix initialization of vacuum metrics

Follow-up for f12b399dd6362a03379cb769954ebfb9972236ed from
https://github.com/systemd/systemd/pull/25076

CID#1501551

2 years agovacuum journal remote (#25076)
berenddeschouwer [Sat, 17 Dec 2022 13:54:16 +0000 (15:54 +0200)] 
vacuum journal remote (#25076)

* Support vacuuming for journal-remote

Co-authored-by: Berend De Schouwer <berend@deschouwer.co.za>
2 years agoMerge pull request #25221 from enr0n/nic-rename-fallback
Luca Boccassi [Sat, 17 Dec 2022 13:51:39 +0000 (14:51 +0100)] 
Merge pull request #25221 from enr0n/nic-rename-fallback

udev: set link alternative name if link is already up during rename

2 years agoMerge pull request #25387 from yuwata/core-fix-gc-logic
Luca Boccassi [Sat, 17 Dec 2022 13:49:21 +0000 (14:49 +0100)] 
Merge pull request #25387 from yuwata/core-fix-gc-logic

core: fix logic of merging units

2 years agoAdd basic systemctl edit test
наб [Tue, 22 Nov 2022 04:14:01 +0000 (05:14 +0100)] 
Add basic systemctl edit test

2 years agoTODO
Lennart Poettering [Fri, 16 Dec 2022 10:42:11 +0000 (11:42 +0100)] 
TODO

2 years agotest: systemd-mount --list and systemd-umount requires the device is initialized...
Yu Watanabe [Thu, 15 Dec 2022 18:04:22 +0000 (03:04 +0900)] 
test: systemd-mount --list and systemd-umount requires the device is initialized by udevd

Fixes #25674.

2 years agoman/systemd-oomd.service: Document command line options
Jade Lovelace [Wed, 7 Dec 2022 19:34:22 +0000 (11:34 -0800)] 
man/systemd-oomd.service: Document command line options

Previously these were not written down. This PR depends on #25670, since
`--dry-run` prints at debug level in `main`, which is surprising
behaviour.

2 years agoMerge pull request #25487 from poettering/systemctl-edit-newline-fix
Lennart Poettering [Thu, 15 Dec 2022 21:22:32 +0000 (22:22 +0100)] 
Merge pull request #25487 from poettering/systemctl-edit-newline-fix

systemctl: simplify trim_edit_markers()

2 years agoImplement SYSTEMD_HOME_MKFS_OPTIONS_* envvars to configure mkfs options for homed...
Aidan Dang [Sat, 10 Dec 2022 10:58:27 +0000 (21:58 +1100)] 
Implement SYSTEMD_HOME_MKFS_OPTIONS_* envvars to configure mkfs options for homed LUKS directories

2 years agorepart: Always derive fs/luks UUIDs from generated partition UUID
Daan De Meyer [Thu, 15 Dec 2022 14:06:40 +0000 (14:06 +0000)] 
repart: Always derive fs/luks UUIDs from generated partition UUID

When generating verity partitions, we only know the partition UUID
of the verity data and hash partition after doing the verity
formatting. This means we can't use the verity partition UUID as
input for deriving the filesystem/luks UUIDs. Currently, we derive
the filesystem/luks UUID from the null UUID instead, which isn't
ideal. Instead, let's always generate a partition UUID and use it
to derive the fs/luks UUIDs, but only use it as the actual partition
UUID if we're not doing verity for the partition.

2 years agopcrphase: gracefully exit if TPM2 support is incomplete
Lennart Poettering [Thu, 15 Dec 2022 17:07:20 +0000 (18:07 +0100)] 
pcrphase: gracefully exit if TPM2 support is incomplete

If everything points to the fact that TPM2 should work, but then the
driver fails to initialize we should handle this gracefully and not
cause failing services all over the place.

Fixes: #25700
2 years agotest: show and check almost all journal entries since the relevant command being...
Yu Watanabe [Thu, 15 Dec 2022 16:11:39 +0000 (01:11 +0900)] 
test: show and check almost all journal entries since the relevant command being invoked

For some reasons, journal timestamps from other sources sometimes
inconsistent. For example,
```
$ journalctl --file system.journal -o short-monotonic -u resmontest.service
[ 1112.168109] ns1.unsigned.test resolvectl[419]: → Q: ns1.unsigned.test IN AAAA
[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← S: success
[ 1112.168109] ns1.unsigned.test resolvectl[419]: → Q: ns1.unsigned.test IN A
[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← S: success
[ 1112.168109] ns1.unsigned.test resolvectl[419]: ← A: ns1.unsigned.test IN A 10.0.0.1
[ 1112.171961] ns1.unsigned.test systemd[1]: resmontest.service: Failed to load configuration: No such file or directory
[ 1112.172223] ns1.unsigned.test systemd[1]: resmontest.service: Trying to enqueue job resmontest.service/start/fail
[ 1112.179866] ns1.unsigned.test systemd[1]: resmontest.service: Installed new job resmontest.service/start as 312
[ 1112.179894] ns1.unsigned.test systemd[1]: resmontest.service: Enqueued job resmontest.service/start as 312
[ 1112.180389] ns1.unsigned.test systemd[1]: resmontest.service: Will spawn child (service_enter_start): /usr/bin/resolvectl
[ 1112.180418] ns1.unsigned.test systemd[1]: resmontest.service: Passing 0 fds to service
[ 1112.180447] ns1.unsigned.test systemd[1]: resmontest.service: About to execute /usr/bin/resolvectl monitor
[ 1112.180477] ns1.unsigned.test systemd[1]: resmontest.service: Forked /usr/bin/resolvectl as 419
[ 1112.180619] ns1.unsigned.test systemd[1]: resmontest.service: Changed dead -> start
[ 1112.180651] ns1.unsigned.test systemd[1]: Starting resmontest.service...
[ 1112.180799] ns1.unsigned.test systemd[419]: resmontest.service: Kernel keyring access prohibited, ignoring.
[ 1112.180895] ns1.unsigned.test systemd[419]: resmontest.service: Executing: /usr/bin/resolvectl monitor
[ 1112.181383] ns1.unsigned.test systemd[1]: resmontest.service: Got notification message from PID 419 (READY=1)
[ 1112.181413] ns1.unsigned.test systemd[1]: resmontest.service: Changed start -> running
[ 1112.181441] ns1.unsigned.test systemd[1]: resmontest.service: Job 312 resmontest.service/start finished, result=done
[ 1112.181469] ns1.unsigned.test systemd[1]: Started resmontest.service.
```
In such case, `journalctl -f` may not show the entries what we are interested in.

Fixes #25749. (At least, workarond for the issue.)

2 years agonetwork: wifi: check SSID when AP interfaces go up
Alvin Šipraga [Wed, 7 Dec 2022 15:43:06 +0000 (16:43 +0100)] 
network: wifi: check SSID when AP interfaces go up

When an AP goes up, the kernel may emit a netlink event indicating that
the interface has gained carrier. In that event, we should check if the
SSID has changed before attempting to reconfigure. Not doing so means
that the link->ssid member is not updated, leading to a potential
mismatch if some of the .network configurations match on SSID=.

There are however scenarios where the above heuristic is not enough.
Specifically, if the interface carrier state flip-flops within a short
enough interval, the internal throttling of netlink events inside the
kernel may suppress intermediate linkdown+linkup events (cf. Linux
net/core/link_watch.c). So there is no linkup event to react on.

To improve on the latter scenario, it is proposed to make newer kernels
emit an NL80211_CMD_START_AP multicast event when an AP goes up. This
event will not be dropped by link_watch. systemd-networkd can then react
to such events as well, and optionally reconfigure the link if the SSID
has changed. This will only work with newer kernels though.

2 years agocore/unit: fix log message 25387/head
Yu Watanabe [Tue, 15 Nov 2022 13:59:01 +0000 (22:59 +0900)] 
core/unit: fix log message

As you can see in the below, the dropped dependency Before=issue-24990.service
is not logged, but the dependency Before=test1.service which is not owned by
the units generated by the TEST-26 is logged.

Before:
systemd[1]: issue-24990.service: Dependency After=test1.service dropped, merged into issue-24990.service
systemd[1]: issue-24990.service: Dependency Before=test1.service dropped, merged into issue-24990.service

After:
systemd[1]: issue-24990.service: Dependency After=test1.service is dropped, as test1.service is merged into issue-24990.service.
systemd[1]: issue-24990.service: Dependency Before=issue-24990.service in test1.service is dropped, as test1.service is merged into issue-24990.service.

2 years agoman: add two signature key example to systemd-measure
Lennart Poettering [Thu, 15 Dec 2022 13:48:08 +0000 (14:48 +0100)] 
man: add two signature key example to systemd-measure

@keszybz asked for an example with --append= used in the systemd-measure
man page. Here it is.

As requested: https://github.com/systemd/systemd/pull/25224#pullrequestreview-1190709772

2 years agosystemctl: don't unlink non-existing temporary files 25487/head
Lennart Poettering [Thu, 24 Nov 2022 13:59:25 +0000 (14:59 +0100)] 
systemctl: don't unlink non-existing temporary files

2 years agosystemctl: if we edit a single file only, jump to the right line
Lennart Poettering [Tue, 22 Nov 2022 16:14:51 +0000 (17:14 +0100)] 
systemctl: if we edit a single file only, jump to the right line

2 years agosystemctl: stop using basename() at one more place
Lennart Poettering [Tue, 22 Nov 2022 17:46:20 +0000 (18:46 +0100)] 
systemctl: stop using basename() at one more place

2 years agosystemctl: line break string where the newlines are
Lennart Poettering [Tue, 22 Nov 2022 17:46:01 +0000 (18:46 +0100)] 
systemctl: line break string where the newlines are

2 years agosystemctl: minor modernizations/simplifications
Lennart Poettering [Tue, 22 Nov 2022 16:13:36 +0000 (17:13 +0100)] 
systemctl: minor modernizations/simplifications

2 years agosystemctl: simplify trim_edit_markers()
Lennart Poettering [Tue, 22 Nov 2022 15:22:41 +0000 (16:22 +0100)] 
systemctl: simplify trim_edit_markers()

This is not performance sensitive, don#t try to be smart with realloc()

Follow-up for: #25305
Fixes: #25303
2 years agotest: fix typo
Yu Watanabe [Thu, 15 Dec 2022 16:38:08 +0000 (01:38 +0900)] 
test: fix typo

2 years agoMerge pull request #25756 from yuwata/test-resolve-1
Yu Watanabe [Thu, 15 Dec 2022 15:53:52 +0000 (00:53 +0900)] 
Merge pull request #25756 from yuwata/test-resolve-1

test: several cleanups for TEST-75-RESOLVE

2 years agoMerge pull request #25718 from yuwata/locale-cleanups
Yu Watanabe [Thu, 15 Dec 2022 15:51:13 +0000 (00:51 +0900)] 
Merge pull request #25718 from yuwata/locale-cleanups

locale: avoid TOCTOU in reading config files

2 years agotest-network: add a test for renaming device to current altname 25221/head
Nick Rosbrook [Wed, 7 Dec 2022 17:28:28 +0000 (12:28 -0500)] 
test-network: add a test for renaming device to current altname

2 years agomkosi: work around a file conflict between systemd and systemd-boot
Frantisek Sumsal [Thu, 15 Dec 2022 12:52:52 +0000 (13:52 +0100)] 
mkosi: work around a file conflict between systemd and systemd-boot

2 years agorepart: Use "defer" in docs instead of "skip"
Daan De Meyer [Thu, 15 Dec 2022 14:27:08 +0000 (14:27 +0000)] 
repart: Use "defer" in docs instead of "skip"

2 years agosd-netlink: add a test for rtnl_set_link_name()
Nick Rosbrook [Tue, 22 Nov 2022 22:01:47 +0000 (17:01 -0500)] 
sd-netlink: add a test for rtnl_set_link_name()

Add a test that verifies a deleted alternative name is restored on error
in rtnl_set_link_name().

2 years agoudev: attempt device rename even if interface is up
Nick Rosbrook [Fri, 2 Dec 2022 20:35:25 +0000 (15:35 -0500)] 
udev: attempt device rename even if interface is up

Currently rename_netif() will not attempt to rename a device if it is
already up, because the kernel will return -EBUSY unless live renaming
is allowed on the device. This restriction will be removed in a future
kernel version [1].

To cover both cases, always attempt to rename the interface and return 0
if we get -EBUSY.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next.git/commit/?id=bd039b5ea2a9

2 years agosd-netlink: restore altname on error in rtnl_set_link_name
Nick Rosbrook [Wed, 2 Nov 2022 09:36:14 +0000 (05:36 -0400)] 
sd-netlink: restore altname on error in rtnl_set_link_name

If a current alternative name is to be used to rename a network
interface, the alternative name must be removed first. If interface
renaming fails, restore the alternative name that was deleted if
necessary.

2 years agoManager: also log caller of daemon-reexec
Luca Boccassi [Thu, 15 Dec 2022 12:20:28 +0000 (12:20 +0000)] 
Manager: also log caller of daemon-reexec

2 years agosd-netlink: do not swap old name and alternative name
Nick Rosbrook [Fri, 2 Dec 2022 20:26:18 +0000 (15:26 -0500)] 
sd-netlink: do not swap old name and alternative name

Commit 434a348380 ("netlink: do not fail when new interface name is
already used as an alternative name") added logic to set the old
interface name as an alternative name, but only when the new name is
currently an alternative name. This is not the desired outcome in most
cases, and the important part of this commit was to delete the new name
from the list of alternative names if necessary.

2 years agoudev/net: allow new link name as an altname before renaming happens
Nick Rosbrook [Wed, 2 Nov 2022 15:05:01 +0000 (11:05 -0400)] 
udev/net: allow new link name as an altname before renaming happens

When configuring a link's alternative names, the link's new name to-be
is not allowed to be included because interface renaming will fail if
the new name is already present as an alternative name. However,
rtnl_set_link_name will delete the conflicting alternative name before
renaming the device, if necessary.

Allow the new link name to be set as an alternative name before the
device is renamed. This means that if the rename is later skipped (i.e.
because the link is already up), then the name can at least still be
present as an alternative name.

2 years agoMerge pull request #24058 from qdeslandes/journald_regex_filtering
Yu Watanabe [Thu, 15 Dec 2022 13:03:33 +0000 (22:03 +0900)] 
Merge pull request #24058 from qdeslandes/journald_regex_filtering

Allow for journald logs filtering on a per-unit basis

2 years agoRevert "test: wait for the monitoring service to become active" 25756/head
Yu Watanabe [Thu, 15 Dec 2022 07:28:52 +0000 (16:28 +0900)] 
Revert "test: wait for the monitoring service to become active"

This reverts commit 5dd34c2604567320707625bc009cf01c3769605f.

`resolvectl monitor` sends notify event, and systemd-run wait for the
service being in active state. Hence, the loop is not necessary.

2 years agotest: suppress echo in monitor_check_rr()
Yu Watanabe [Thu, 15 Dec 2022 06:28:56 +0000 (15:28 +0900)] 
test: suppress echo in monitor_check_rr()

2 years agopackit: drop/replace deprecated directives
Frantisek Sumsal [Thu, 15 Dec 2022 12:14:30 +0000 (13:14 +0100)] 
packit: drop/replace deprecated directives

2 years agorepart: Fix integration test
Daan De Meyer [Thu, 15 Dec 2022 12:01:35 +0000 (12:01 +0000)] 
repart: Fix integration test

2 years agoMerge pull request #25224 from poettering/measure-append
Yu Watanabe [Thu, 15 Dec 2022 12:47:29 +0000 (21:47 +0900)] 
Merge pull request #25224 from poettering/measure-append

add --append= switch to systemd-measure

2 years agoMerge pull request #25735 from yuwata/switch-root-follow-ups
Yu Watanabe [Thu, 15 Dec 2022 12:39:40 +0000 (21:39 +0900)] 
Merge pull request #25735 from yuwata/switch-root-follow-ups

mount-util: several follow-ups for recent mount_switch_root() changes

2 years agohwdb: Fix mount matrix for CSL Panther Tab HD (#25752)
mvzlb [Thu, 15 Dec 2022 10:59:14 +0000 (11:59 +0100)] 
hwdb: Fix mount matrix for CSL Panther Tab HD (#25752)

Commit a76d7aca sets ACCEL_MOUNT_MATRIX to match the device's casing
(landscape) instead of the LCD panel (portrait).

2 years agoupdate TODO 25224/head
Lennart Poettering [Tue, 1 Nov 2022 14:10:47 +0000 (15:10 +0100)] 
update TODO

2 years agotest: add integration test for systemd-measure --append=
Lennart Poettering [Thu, 15 Dec 2022 10:39:33 +0000 (11:39 +0100)] 
test: add integration test for systemd-measure --append=

2 years agomeasure: add --append= switch for merging signatures
Lennart Poettering [Tue, 1 Nov 2022 13:54:47 +0000 (14:54 +0100)] 
measure: add --append= switch for merging signatures

Often it's useful to add multiple signatures in the signature JSON file
to embedd in a single .pcrsig. (For example, a signature by key X for
boot phase "enter-initrd" and one by key Y for
"enter-initrd:leave-initrd" or so). Make this easy, by adding the
ability to append signatures to a previously generated JSON file.

2 years agojson: add helper for adding variant to array suppressing duplicates
Lennart Poettering [Tue, 1 Nov 2022 13:56:44 +0000 (14:56 +0100)] 
json: add helper for adding variant to array suppressing duplicates

2 years agojournal: add integration tests for log filtering 24058/head
Quentin Deslandes [Tue, 13 Sep 2022 15:12:36 +0000 (16:12 +0100)] 
journal: add integration tests for log filtering

Add integration tests for journald's log filtering feature.

2 years agojournal: filter log based on LogFilterPatterns
Quentin Deslandes [Tue, 13 Sep 2022 15:15:13 +0000 (16:15 +0100)] 
journal: filter log based on LogFilterPatterns

Use LogFilterPatterns from the unit's cgroup xattr in order to keep or
discard log messages before writing them to the journal.
When a log message is discarded, it won't be written to syslog, console...
either.

When a native, syslog, or standard output log message is received,
systemd-journald will process it if it matches against at least one
allowed pattern (if any) and none of the denied patterns (if any).

2 years agoCreate hash_ops structure to free keys of type pcre2_code
Quentin Deslandes [Tue, 13 Sep 2022 15:14:52 +0000 (16:14 +0100)] 
Create hash_ops structure to free keys of type pcre2_code

2 years agosystemctl: add support for LogFilterPatterns for show command
Quentin Deslandes [Wed, 14 Sep 2022 17:17:19 +0000 (18:17 +0100)] 
systemctl: add support for LogFilterPatterns for show command

Parse DBus structure send by LogFilterPatterns to print it in systemctl
show.

2 years agojournal: log filtering options support in PID1
Quentin Deslandes [Mon, 7 Nov 2022 19:30:01 +0000 (20:30 +0100)] 
journal: log filtering options support in PID1

Define new unit parameter (LogFilterPatterns) to filter logs processed by
journald.

This option is used to store a regular expression which is carried from
PID1 to systemd-journald through a cgroup xattrs:
`user.journald_log_filter_patterns`.

2 years agoset: add set_make_nulstr
Quentin Deslandes [Mon, 7 Nov 2022 19:25:46 +0000 (20:25 +0100)] 
set: add set_make_nulstr

Add function set_make_nulstr() to create a nulstr out of a set. Behave
the same way as strv_make_nulstr().

2 years agoMerge pull request #25350 from poettering/efi-guid-equal
Lennart Poettering [Thu, 15 Dec 2022 09:24:58 +0000 (10:24 +0100)] 
Merge pull request #25350 from poettering/efi-guid-equal

efi: add efi_guid_equal() helper

2 years agoMerge pull request #25602 from fbuihuu/fix-TEST-73-LOCALE
Yu Watanabe [Thu, 15 Dec 2022 08:47:05 +0000 (17:47 +0900)] 
Merge pull request #25602 from fbuihuu/fix-TEST-73-LOCALE

localed: reload PID1 configuration after modifying /etc/locale.conf

2 years agorepart: Rework Minimize= option settings
Daan De Meyer [Tue, 13 Dec 2022 18:52:18 +0000 (18:52 +0000)] 
repart: Rework Minimize= option settings

Instead of having Minimize= take a boolean let's allow for two
different ways to enable it. "best" means we want the most minimal
image possible, which currently is only possible for read-only
filesystems but can be extended in the future with bisection
to find the most minimal possible size.

We also add "guess", which is the current behavior, where we
populate once and use the sparse size to make a reasonable guess
on a size that fits all the sources without needing to O(log(n))
tries to find the most minimal size.

2 years agomount-util: make mount_switch_root() take a mount propagation flag 25735/head
Yu Watanabe [Wed, 14 Dec 2022 06:38:54 +0000 (15:38 +0900)] 
mount-util: make mount_switch_root() take a mount propagation flag

2 years agomountpoint-util: introduce mount_propagation_flag_is_valid()
Yu Watanabe [Wed, 14 Dec 2022 17:48:59 +0000 (02:48 +0900)] 
mountpoint-util: introduce mount_propagation_flag_is_valid()

2 years agomountpoint-util: rename mount_propagation_flags_to_string() and friends as singular
Yu Watanabe [Wed, 14 Dec 2022 08:52:31 +0000 (17:52 +0900)] 
mountpoint-util: rename mount_propagation_flags_to_string() and friends as singular

2 years agomount-util: mount flag is unsigned long
Yu Watanabe [Wed, 14 Dec 2022 05:58:48 +0000 (14:58 +0900)] 
mount-util: mount flag is unsigned long

2 years agomount-util: drop unnecessary inline attributes
Yu Watanabe [Wed, 14 Dec 2022 06:40:02 +0000 (15:40 +0900)] 
mount-util: drop unnecessary inline attributes

2 years agoMerge pull request #25743 from yuwata/timesync-ipv6
Yu Watanabe [Thu, 15 Dec 2022 03:57:54 +0000 (12:57 +0900)] 
Merge pull request #25743 from yuwata/timesync-ipv6

timesync: ignore IPv6 addresses when the kernel does not support it

2 years agobasic: do not output emojis if not on a proper terminal
Zbigniew Jędrzejewski-Szmek [Wed, 14 Dec 2022 14:39:26 +0000 (15:39 +0100)] 
basic: do not output emojis if not on a proper terminal

$TERM would generally be set if we're connected to a proper graphical terminal
emulator. In all other cases, in particular if $TERM is not set, we almost
certainly are not connected to something that can output emojis. In particular
the text console is unlikely to ever do it correctly.

So let's invert the check, and only write emojis if $TERM is set.

Fixes #25521.

2 years agoMerge pull request #25732 from enr0n/unit-test-machine-id-initialized
Yu Watanabe [Thu, 15 Dec 2022 03:55:04 +0000 (12:55 +0900)] 
Merge pull request #25732 from enr0n/unit-test-machine-id-initialized

unit tests: do not fail when `/etc/machine-id` is empty

2 years agoMerge pull request #25723 from keszybz/generators-tmp
Yu Watanabe [Thu, 15 Dec 2022 03:53:49 +0000 (12:53 +0900)] 
Merge pull request #25723 from keszybz/generators-tmp

Run generators with / ro and /tmp mounted

2 years agoMerge pull request #25693 from yuwata/binfmt
Yu Watanabe [Thu, 15 Dec 2022 03:52:30 +0000 (12:52 +0900)] 
Merge pull request #25693 from yuwata/binfmt

binfmt: several cleanups

2 years agopam: actually align the columns
Zbigniew Jędrzejewski-Szmek [Wed, 14 Dec 2022 21:23:31 +0000 (22:23 +0100)] 
pam: actually align the columns

In 9efb224443d819b7d64ec76cb94c8aa625a8abf2 was supposed to align
them, but for some reason I just added a second space everywhere.

2 years agosystemctl: is-enabled: document the return code change
Mike Yuan [Wed, 14 Dec 2022 16:50:19 +0000 (00:50 +0800)] 
systemctl: is-enabled: document the return code change

Follow-up for #25689

We've added a new output ("not-found") in #25689.

2 years agofstab-generator: use log message that matches reality 25723/head
Zbigniew Jędrzejewski-Szmek [Tue, 13 Dec 2022 13:38:06 +0000 (14:38 +0100)] 
fstab-generator: use log message that matches reality

We *assume* that when /sys is read-only, we're running in a container. But
there can other reasons, for example root is mount ro and nobody has mounted
/sys yet, or somebody forgot to add /sys to the list of filesystem not to
remount ro in a sandbox. So let's actually say what we know instead of assuming.

systemd-fstab-generator was reporting that it's running in a container and I
spent a good few minutes trying to figure out why 'systemd-detect-virt -c'
disagrees, before noticing that it's just checking a different condition.

2 years agotree-wide: use mode=0nnn for mount option
Zbigniew Jędrzejewski-Szmek [Tue, 13 Dec 2022 13:35:56 +0000 (14:35 +0100)] 
tree-wide: use mode=0nnn for mount option

This is an octal number. We used the 0 prefix in some places inconsistently.
The kernel always interprets in base-8, so this has no effect, but I think
it's nicer to use the 0 to remind the reader that this is not a decimal number.

2 years agomanager: execute generators in a mount namespace "sandbox"
Zbigniew Jędrzejewski-Szmek [Tue, 13 Dec 2022 13:32:35 +0000 (14:32 +0100)] 
manager: execute generators in a mount namespace "sandbox"

When generators are executed during early boot, /tmp might not be available
yet. This causes problems with bash, because here-docs don't work. Even
non-shell code can often assume that /tmp is available. This limitation is
known to trip up people, and when the code is tested on a "normal" system,
everything works.

We can solve this nicely, and get another small benefit, by making most of the
file system read-only and "punching holes" for some dirs that should be
writable. The generator code runs with full privileges and can do anything it
wants by writing appropriate systemd units, so it doesn't make much sense to do
any significant sandboxing around generators. But making root read-only is nice
because it can catch stupid mistakes where the generator tries to write to a
wrong path or something like that. We effectively also get a "private /tmp" for
the generators, which protects them against existing files in /tmp.

The path does the following:
when executing generators, we fork, and the child unshares root and makes
it recursively read-only, with the exception of /sys and /run. Error handling
is permissive — if some of this setup fails, we're in the same state as
before the patch.

Fixes #24430.

2 years agoshared: add new safe_fork flag FORK_PRIVATE_TMP
Zbigniew Jędrzejewski-Szmek [Wed, 14 Dec 2022 12:40:53 +0000 (13:40 +0100)] 
shared: add new safe_fork flag FORK_PRIVATE_TMP

If the flag is set, we mount /tmp/ in a way that is suitable for generators and
other quick jobs.

Unfortunately I had to move some code from shared/mount-util.c to
basic/mountpoint-util.c. The functions that are moved are very thin wrappers
around mount(2), so this doesn't actually change much in the code split between
libbasic and libshared.

Implications for the host would be weird if a private mount namespace is not
used, so assert on FORK_NEW_MOUNTNS when the flag is used.

2 years agojournal: skip part of test-journal-interleaving if no machine-id exists 25732/head
Nick Rosbrook [Wed, 14 Dec 2022 15:07:40 +0000 (10:07 -0500)] 
journal: skip part of test-journal-interleaving if no machine-id exists

When executed on a systemd with an empty /etc/machine-id,
test-journal-interleaving fails in test_sequence_numbers_one() when
re-opening the existing "two.journal". This is because opening the
existing journal file with managed_journal_file_open() causes
journal_file_verify_header() to be called. This function tries to
compare the current machine-id to the machine-id in the journal file
header, but does not handle the case where the machine-id is empty or
non-existent.

Check if we have an initialized machine-id before executing this portion
of the test.

2 years agotest-load-fragment: simplify machine-id check
Nick Rosbrook [Tue, 13 Dec 2022 17:25:35 +0000 (12:25 -0500)] 
test-load-fragment: simplify machine-id check

2 years agotest-unit-name: simplify machine-id check
Nick Rosbrook [Tue, 13 Dec 2022 17:22:37 +0000 (12:22 -0500)] 
test-unit-name: simplify machine-id check

2 years agotest-fs-util: skip part of test_chase_symlinks if machine-id is not initialized
Nick Rosbrook [Mon, 12 Dec 2022 19:37:52 +0000 (14:37 -0500)] 
test-fs-util: skip part of test_chase_symlinks if machine-id is not initialized

The part of test_chase_symlink in test-fs-util that calls
sd_id128_get_machine will fail if /etc/machine-id is empty, so skip this
block if the machine-id is not initialized.

2 years agotest-id128: simplify machine-id check
Nick Rosbrook [Mon, 12 Dec 2022 19:35:08 +0000 (14:35 -0500)] 
test-id128: simplify machine-id check

This also ensures that the test is skipped when /etc/machine-id exists,
but is not initialized.

2 years agounit: check more specific path to be written by systemd-binfmt 25693/head
Yu Watanabe [Sat, 10 Dec 2022 02:46:45 +0000 (11:46 +0900)] 
unit: check more specific path to be written by systemd-binfmt

Follow-up for 41807efb1594ae8e71e0255e154ea7d17be2251a.
Replaces #25690.

2 years agobinfmt: check if binfmt is mounted before applying rules
Yu Watanabe [Sat, 10 Dec 2022 02:42:50 +0000 (11:42 +0900)] 
binfmt: check if binfmt is mounted before applying rules

2 years agobinfmt-util: also check if binfmt is mounted in read-write
Yu Watanabe [Sat, 10 Dec 2022 02:32:24 +0000 (11:32 +0900)] 
binfmt-util: also check if binfmt is mounted in read-write

2 years agotimesync: ignore IPv6 addresses when the kernel does not support IPv6 25743/head
Yu Watanabe [Wed, 14 Dec 2022 14:54:11 +0000 (23:54 +0900)] 
timesync: ignore IPv6 addresses when the kernel does not support IPv6

Fixes #25728.

2 years agobinfmt-util: split out binfmt_mounted()
Yu Watanabe [Sat, 10 Dec 2022 02:25:28 +0000 (11:25 +0900)] 
binfmt-util: split out binfmt_mounted()

No functional changes, just refactoring and preparation for later
commits.

2 years agostat-util: introduce fd_is_read_only_fs()
Yu Watanabe [Sat, 10 Dec 2022 02:23:05 +0000 (11:23 +0900)] 
stat-util: introduce fd_is_read_only_fs()

Then, reimplement path_is_read_only_fs() by the function to avoid race.

2 years agoefi: add common implementation for loop finding EFI configuration tables 25350/head
Lennart Poettering [Wed, 14 Dec 2022 17:48:52 +0000 (18:48 +0100)] 
efi: add common implementation for loop finding EFI configuration tables

2 years agoefi: add efi_guid_equal() helper
Lennart Poettering [Fri, 11 Nov 2022 15:05:03 +0000 (16:05 +0100)] 
efi: add efi_guid_equal() helper

2 years agoMerge pull request #25575 from brauner/nspawn.socket_surgery
Lennart Poettering [Wed, 14 Dec 2022 17:36:44 +0000 (18:36 +0100)] 
Merge pull request #25575 from brauner/nspawn.socket_surgery

nspawn: reduce number of sockets

2 years agoMerge pull request #25734 from yuwata/sd-id128
Yu Watanabe [Wed, 14 Dec 2022 17:23:03 +0000 (02:23 +0900)] 
Merge pull request #25734 from yuwata/sd-id128

sd-id128: several followups

2 years agotimesync: Keep trying to connect even if the socket cannot be opened
Felix Riemann [Wed, 14 Dec 2022 14:02:39 +0000 (15:02 +0100)] 
timesync: Keep trying to connect even if the socket cannot be opened

This makes sure that after a server could not be contacted due to a
socket error, other (possibly working) NTP servers in the list of
configured NTP servers are (re-)tried.

Fixes #25728.

2 years agohwdb: Add mount matrix for CSL Panther Tab HD
MVZ Ludwigsburg [Wed, 14 Dec 2022 15:57:24 +0000 (16:57 +0100)] 
hwdb: Add mount matrix for CSL Panther Tab HD

2 years agoUse dummy allocator to make accesses defined as per standard
Siddhesh Poyarekar [Tue, 13 Dec 2022 21:54:36 +0000 (16:54 -0500)] 
Use dummy allocator to make accesses defined as per standard

systemd uses malloc_usable_size() everywhere to use memory blocks
obtained through malloc, but that is abuse since the
malloc_usable_size() interface isn't meant for this kind of use, it is
for diagnostics only.  This is also why systemd behaviour is flaky when
built with _FORTIFY_SOURCE.

One way to make this more standard (and hence safer) is to, at every
malloc_usable_size() call, also 'reallocate' the block so that the
compiler can see the larger size.  This is done through a dummy
reallocator whose only purpose is to tell the compiler about the larger
usable size, it doesn't do any actual reallocation.

Florian Weimer pointed out that this doesn't solve the problem of an
allocator potentially growing usable size at will, which will break the
implicit assumption in systemd use that the value returned remains
constant as long as the object is valid.  The safest way to fix that is
for systemd to step away from using malloc_usable_size() like this.

Resolves #22801.

2 years agoman: update documents for sd_id128_get_invocation() 25734/head
Yu Watanabe [Wed, 14 Dec 2022 05:29:25 +0000 (14:29 +0900)] 
man: update documents for sd_id128_get_invocation()

2 years agosd-id128: also refuse an empty invocation ID
Yu Watanabe [Wed, 14 Dec 2022 04:40:42 +0000 (13:40 +0900)] 
sd-id128: also refuse an empty invocation ID

2 years agosd-id128: allow sd_id128_get_machine() and friend to be called with NULL
Yu Watanabe [Wed, 14 Dec 2022 04:34:15 +0000 (13:34 +0900)] 
sd-id128: allow sd_id128_get_machine() and friend to be called with NULL

It may be useful to check if the machine ID or friends is set or not.

2 years agosd-id128: make sd_id128_get_machine() or friends return -EUCLEAN when an ID is in...
Yu Watanabe [Wed, 14 Dec 2022 05:31:09 +0000 (14:31 +0900)] 
sd-id128: make sd_id128_get_machine() or friends return -EUCLEAN when an ID is in an invalid format

EINVAL suggests that the caller passes an invalid argument. EIO is
for "input/output error", i.e. the error you'd get if the disk or
file system is borked, and this error code could be returned by the
underlying read/write functions.

Let's make the functions return an unambiguous error code.

2 years agotimesync: downgrade log message about unsupported address family
Yu Watanabe [Wed, 14 Dec 2022 14:50:08 +0000 (23:50 +0900)] 
timesync: downgrade log message about unsupported address family

As this is mostly not user's fault.

2 years agoswap: tell swapon to reinitialize swap if needed
David Tardon [Mon, 12 Dec 2022 15:21:30 +0000 (16:21 +0100)] 
swap: tell swapon to reinitialize swap if needed

If the page size of a swap space doesn't match the page size of the
currently running kernel, swapon will fail. Let's instruct it to
reinitialize the swap space instead.

2 years agoMerge pull request #25717 from bluca/reload
Luca Boccassi [Wed, 14 Dec 2022 14:45:22 +0000 (15:45 +0100)] 
Merge pull request #25717 from bluca/reload

manager: log reload() sender and allow rate-limiting

2 years agoNEWS: fix typo
Yu Watanabe [Wed, 14 Dec 2022 11:41:42 +0000 (20:41 +0900)] 
NEWS: fix typo

2 years agolocale-setup: avoid TOCTOU in reading locale.conf 25718/head
Yu Watanabe [Tue, 13 Dec 2022 09:04:48 +0000 (18:04 +0900)] 
locale-setup: avoid TOCTOU in reading locale.conf

2 years agolocale-setup: make failure in stat() critical
Yu Watanabe [Tue, 13 Dec 2022 09:02:57 +0000 (18:02 +0900)] 
locale-setup: make failure in stat() critical

The file was created by this function. Hence, the failure is something
critical.