Commit Graph
49468 Commits
Author SHA1 Message Date
Luca Boccassi eb0c2da89e Merge pull request #32915 from yuwata/machine-id-setup
machine-id-setup: acquire machine ID from /run/machine-id if possible
2024-05-20 00:16:16 +02:00
Yu Watanabe 16718dcf78 machine-id-setup: acquire machine ID from /run/machine-id if possible
If machine ID is previously stored at /run/machine-id, then let's reuse
it. This is important on switching root and /etc/machine-id was previously
a mount point.

Fixes #32908.
2024-05-20 02:17:57 +09:00
Yu Watanabe ba540e9f1c machine-id-setup: use empty_or_root() 2024-05-20 01:05:23 +09:00
Yu Watanabe 3b1b2d4e3d machine: fix use-after-free in Rename() DBus method
Fixes a bug introduced by 1ddb263d21.

Note, this requires the previous two commits, and cannot backport without them.

Note, before the previous commit, the use-after-free could be triggered
only by Rename() DBus method, and could not by RenameImage(), as we did not
cache Image object when RenameImage() method is called. And machinectl
always uses RenameImage(). Hence, the issue could be triggered only when
Rename() DBus method is explicitly called by e.g. busctl.

With the previous commit, the Image object passed to the function is
always cached. Hence, the issue could be triggered even with machinectl
command, and this fix is important.
2024-05-20 01:03:14 +09:00
Yu Watanabe c6aeb9b596 machine: also acquire Image object from cache when a dbus method in the main interface is called
Previously, Image objects were only cached when reading properties or
methods in the org.freedesktop.machine1.Image interface are called.

This makes that, when a method in the main interface (org.freedesktop.machine1)
for an image is called, also acquire the Image object from the cache,
and if not cached, create Image object and put into the cache, like we
do for org.freedesktop.machine1.Image.

Otherwise, if some properties of an image are updated by methods in the main
interface, e.g. MarkImageReadOnly(), the changes do not applied to the cached
Image object, and subsequent read of proerties through the interface for the
image, e.g. ReadOnly property, may provide outdated values.

Follow-up for 1ddb263d21.

Fixes #32888.
2024-05-20 01:03:14 +09:00
Yu Watanabe 6d917da140 machine: split out manager_acquire_image() from image_object_find()
Preparation for the next commit. No functional change.
2024-05-20 01:03:14 +09:00
Yu Watanabe 96ac6d3fcc discover-image: also update Image.limit in image_set_limit()
Same as the previous commit, but for SetLimit DBus method vs Limit
property and friends.
2024-05-20 01:03:14 +09:00
Yu Watanabe 608c321f23 discover-image: update Image.read_only flag in image_read_only()
Otherwise, ReadOnly DBus property in org.freedesktop.machine1.Image or
org.freedesktop.portable1.Image will not be updated by MarkReadOnly DBus
method.
2024-05-20 01:03:14 +09:00
Mike Yuan 28459ba1f4 run: pass the pty slave fd to transient service
The rationale is similar to 40e1f4ea74.

Currently, we only pass TTYPath=/dev/pts/... to
the transient service spawned by systemd-run.
This is a bit problematic though, when ExecStartPre=
or ExecStopPost= is used. Since when these control
processes get to run, the main process is not yet
started/has already exited, hence the slave suffers
from the same vhangup problem as the mentioned commit.

By passing the slave fd in, the service manager will
hold the fd open as long as the service is alive.

Fixes #32916
2024-05-19 09:18:48 +08:00
Mike Yuan ade0789fab run: do not log "Error on PTY forwarding logic" when disconnected due to user operation 2024-05-19 09:18:48 +08:00
Mike Yuan 6d2a26a136 vmspawn: use openpt_allocate where appropriate 2024-05-19 09:18:48 +08:00
Mike Yuan 2153899d96 ptyfwd: trivial coding style and log cleanups 2024-05-19 09:18:48 +08:00
Yu Watanabe 762412f2bb Merge pull request #32902 from yuwata/emergency-action-fixes
several fixes for emergency actions and document update
2024-05-18 16:32:36 +09:00
Yu Watanabe f3c5ea7111 install-file: make fs_make_very_read_only() static 2024-05-17 23:06:48 +02:00
Yu Watanabe 2a2d9539f0 core: refuse invalid emergency actions for SuccessAction= and friends in user service manager
Especially, soft-reboot is not supported by user service manager.

Fixes a bug in 13ffc60749 and
3cf848f6cd.
2024-05-18 02:51:34 +09:00
Mike Yuan de12b8d163 core/execute: do not use format str for log_object_internal
This reverts part of 210ca71cb5.

Another fallout from that commit...

Fixes #32877
2024-05-17 15:15:21 +02:00
Daan De Meyer e3828d7103 mountpoint-util: Deal with kernel API breakage in "norecovery" mount option
"norecovery" was deprecated for btrfs in
https://github.com/torvalds/linux/commit/74ef00185eb864252156022ff129b01549504175
and removed in
https://github.com/torvalds/linux/commit/a1912f712188291f9d7d434fba155461f1ebef66.

Let's drop our assumption that btrfs supports "norecovery" and first query for the
new name of the option followed by querying for the old name.
2024-05-17 14:29:09 +02:00
Yu Watanabe d7769b4d8e network/route: fix unexpected removal of routes for wireguard
Fixes a bug introduced by 8d01e44c1f.

If a .netdev file for a wireguard interface requests to configure
routes for the interface, the routes were removed during configuring
another interface.

Fixes #32859.
2024-05-17 06:40:43 +09:00
Zbigniew Jędrzejewski-Szmek 1cd53a1f91 repart: remove duplicate word in --help
My bad; follow-up for 4955d2e367.
2024-05-16 20:01:08 +02:00
Luca Boccassi aa4644882e Merge pull request #32863 from YHNdnzj/switch-root-followup
Two minor followups
2024-05-16 15:53:18 +02:00
Daan De Meyer 11b706178c Merge pull request #32842 from DaanDeMeyer/cryptsetup
test: Enable TEST-24-CRYPTSETUP for mkosi
2024-05-16 15:50:55 +02:00
Daan De Meyer 2540036979 journal-importer: Consider ECONNRESET as EOF
Otherwise we log a noisy error when we get ECONNRESET.
2024-05-16 19:23:56 +08:00
Mike Yuan 4eec099db8 switch-root: update comment regarding dropped mounts
Follow-up for 07c5c2ab8b
2024-05-16 19:18:59 +08:00
Mike Yuan 2599b32e72 fd-util: check and log error properly for fd_reopen_propagate_append_and_position
Follow-up for b8e25bff38
2024-05-16 19:17:25 +08:00
Yu Watanabe 2e93331605 pe-binary: .initrd section is optional for UKI
.osrel is also optional, but sd-boot and bootctl requires it.
So, let's keep .osrel section at least now.

Fixes #32774.
2024-05-16 12:56:22 +02:00
Zbigniew Jędrzejewski-Szmek b3aa88a475 Merge pull request #32800 from YHNdnzj/preserve-cred-mounts
switch-root: preserve the whole cred mount tree (/run/credentials/)
2024-05-16 12:45:40 +02:00
Daan De Meyer 0b6891abf5 repart: Improve error message 2024-05-16 12:34:28 +02:00
Luca Boccassi b410d2dcab Merge pull request #32857 from dtardon/drop-assert
Drop invalid asserts
2024-05-16 12:04:51 +02:00
Daan De Meyer 452f91d846 core: Skip private /tmp for generators in manager test runs
For manager test runs, the generator output paths are located in
/tmp, which means that if we mount a private /tmp for generators,
we lose all the generated units (actually the generators will just
fail because the directories don't exist, but if they did exist,
we'd still lose all the units).

Let's avoid the problem by skipping the private /tmp for manager
test runs. This also avoids any possible privilege issues with
mounting a private /tmp that might happen in this scenario.
2024-05-16 10:17:00 +02:00
David Tardon 119f22526e journald-server: drop another invalid assert()
config_parse_forward_to_socket() is not used for parsing unit files
either.

Follow-up-for: f31cff849d
2024-05-16 10:10:25 +02:00
David Tardon 2ef7cdc425 journald-server: drop invalid assert()
config_parse_compress() is not used for parsing unit files, hence unit
is always NULL.

Fixes #32856

Follow-up-for: 6813be2eba
2024-05-16 10:10:19 +02:00
Yu Watanabe 60dbecff27 systemctl: fix "applying zero offset to null pointer" UBSan error
Fixes #32837.
2024-05-15 20:24:03 +02:00
Mike Yuan 07c5c2ab8b switch-root: preserve the whole cred mount tree (/run/credentials/)
Currently, during soft-reboot, some services may survive,
but their associated credential mounts are dropped.
Let's instead preserve them, as discussed.
2024-05-16 00:48:16 +08:00
Luca Boccassi 0403065876 Merge pull request #32844 from YHNdnzj/mount-defaultdep-followup
core/mount: correctly set DefaultDependencies=no for mounts from mountinfo
2024-05-15 18:23:26 +02:00
Luca Boccassi 5de20f5619 Merge pull request #32818 from keszybz/libsystemd-network-size-check
Check packet size in libsystemd-network
2024-05-15 17:33:22 +02:00
Mike Yuan bb5f3e6410 core/mount: correctly set DefaultDependencies=no for mounts from mountinfo
Follow-up for 3c0a1b1e70

Before this commit, DefaultDependencies=no is set in
mount_add_extras(). However, when generating mount units
from /proc/self/mountinfo, we don't have a unit in memory
yet, and mount_setup_new_unit() doesn't call into
mount_add_extras().

Fixes #32838
2024-05-15 22:02:32 +08:00
Mike Yuan bb33c5da87 core/swap: rename variable 'new' -> 'new_unit'
Follow-up for ba31a5018f

'new' is already used as a macro for memory allocation.
Let's avoid the confusion here.

Addresses https://github.com/systemd/systemd/pull/31902#discussion_r1557672858
2024-05-15 21:54:21 +08:00
Daan De Meyer d02a41a9d4 core: Fix assertion in parse_smbios_strings() 2024-05-15 13:30:35 +02:00
Luca Boccassi e0d13e719e Merge pull request #32830 from yuwata/home-skel
home: fix ownership of files copied from skelton directory
2024-05-15 01:26:15 +02:00
Yu Watanabe 05e64ea45d home: fix ownership of files copied from skelton directory
Fixes #32808.
2024-05-15 06:38:41 +09:00
Zbigniew Jędrzejewski-Szmek e9bdbb6bbc core,vconsole-setup: treat locking failure as non-fatal
Locking of the tty device and then /dev/console was added to synchronize
vconsole-setup with other writers to the console. But it turns out that often
the locking doesn't work and we carved out various cases where we ignore
failure:
- lack of permissions (in the user manager)
- missing device node

It turns out that there's at least one more failure mode: we get -EIO when the
console is (mis-)configured to point to an invalid device. E.g. in
rhbug#2273069 the reporter has a VM in Proxmox without a virtual console
configured and has 'console=tty console=ttyS0' on the kernel cmdline. I
couldn't reproduce this under libvirt, but failure with EIO has been reported
by at least four users in #30501.

Note that in systemd-vconsole-setup we report this is a hard failure, while
in the manager, we only do a debug line. So it's possible that the failure
also occured there, causing the rest of the setup of the tty to be skipped
without further notice.

Ignore the locking failure, since there's just too many ways it can fail. If we
proceed without a lock, we're back to the situation before we started locking,
which wasn't too bad. OTOH, skipping setup of the console is problematic for
users, and it seems better to try to do the setup without locking.

Fixes https://github.com/systemd/systemd/issues/30501,
https://bugzilla.redhat.com/show_bug.cgi?id=2273069.
2024-05-14 23:22:41 +02:00
Luca Boccassi 76fe0035df Merge pull request #32817 from YHNdnzj/core-varlink
core/core-varlink: trivial cleanups
2024-05-14 22:40:01 +02:00
Luca Boccassi c7bee5b5d2 Merge pull request #32816 from bluca/chores
Chores for RC2
2024-05-14 22:07:40 +02:00
Zbigniew Jędrzejewski-Szmek 1743b8bad1 core/exec-credential: downgrade warning about missing cred to debug
Follow-up for 6b34871f5d.

The general idea is that the list of credentials to load can and will specify
credentials which actually aren't provided, so a warning is too much. Let's
downgrade this to "info". If it turns out to be too noisy, we can downgrade
further in the future.
2024-05-14 20:13:57 +02:00
Zbigniew Jędrzejewski-Szmek 8e41e460e0 test: rename file with stub functions
icmp6-util-linux.c sounds like a specialized implementation of the functions in
icmp6-util.c. But it's just a set of stub versions used in tests. Rename the
file to make this more obvious.
2024-05-14 18:56:41 +02:00
Zbigniew Jędrzejewski-Szmek b17b91db80 libsystemd-network: use normal style for error checking
We generally use a flat list. The switch stmt was generating excessive
indentation.
2024-05-14 18:56:41 +02:00
Zbigniew Jędrzejewski-Szmek caa4bfd468 libsystemd-network: check size of icmpv6 packets
Coverity was complaining that we use the received packet size as a loop bound
without checking. This is indeed a bit iffy, because depending on how the host
is configured, the packet could be rather large. Let's refuse anything more
than the standard size early to prevent suspicious activity.

Resolves coverity CID#1534892, CID#1543949.
2024-05-14 18:56:35 +02:00
Zbigniew Jędrzejewski-Szmek f7a6418d47 libsystemd-network: remove double initialization 2024-05-14 18:55:34 +02:00
Mike Yuan cd711b6ec9 core/varlink: make manager_setup_varlink_server static
Follow-up for 6906c028e8

Also, use correct log level for varlink_server_add_interface_many().
2024-05-15 00:46:06 +08:00
Mike Yuan e28501fee2 core/varlink: use FOREACH_ELEMENT more 2024-05-15 00:44:27 +08:00