Commit Graph
9757 Commits
Author SHA1 Message Date
Mike Yuan 3a14167102 core/exec-invoke: add a comment that acquire_home uses result from get_fixed_user
Prompted by https://github.com/systemd/systemd/pull/33016#discussion_r1614848067
2024-05-26 13:40:48 +08:00
Mike Yuan c0afdec5cf core/exec-invoke: drop unused param for acquire_home, prefix out param with ret_ 2024-05-26 13:40:48 +08:00
Mike Yuan 6f8ef80bb3 core/dbus-execute: don't trigger assertion if WorkingDirectory="" or "-"
Follow-up for 14631951ce

Before this commit, if WorkingDirectory= is empty or literally "-",
'simplified' is not populated, resulting in the ASSERT_PTR
in unit_write_settingf() below getting triggered.

Also, do not accept "-", so that the parser is consistent
with load-fragment.c

Fixes #33015
2024-05-26 13:40:48 +08:00
Mike Yuan af87bdc6bc core/dbus-execute: use correct char for representing WorkingDirectory=home 2024-05-26 13:40:48 +08:00
Mike Yuan f28a7e87f1 core/load-fragment: also clear missing_ok when WorkingDirectory="" 2024-05-26 13:40:48 +08:00
Mike Yuan f781292d6c core/service: try to query for new main process's starttime
Currently, when service_set_main_pidref() is called
without specifying start_timestamp, exec_status_start()
always uses dual_timestamp_now(). This is not ideal,
though, as when the main pid changes halfway due to
e.g. sd_notify + MAINPID=, it's definitely spurious.
2024-05-22 19:03:13 +08:00
Zbigniew Jędrzejewski-Szmek cbd8fc859a core: simplify variable declaration
It doesn't matter much, but right below there is a second declaration
which already uses this style, and the mismatch was grating.
2024-05-22 11:55:26 +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 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
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
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
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
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
Luca Boccassi 93df5217b9 tree-wide: 'allows to' -> 'allows one to'
As flagged by Lintian
2024-05-14 18:33:27 +02:00
Timo Rothenpieler 00f1714311 cgroup-util: allow cg_read_pid() to skip unmapped (zero) pids 2024-05-14 16:12:20 +02:00
Daan De Meyer 3c0a1b1e70 core: Imply DefaultDependencies=no for credential mounts
Currently, on soft-reboot, /run/credentials/@system is unmounted
because it has DefaultDependencies=yes and as such will have
Conflicts=umount.target and Before=umount.target. Let's make sure
credential mounts survive soft-reboot by implying DefaultDependencies=no
for credential mounts.
2024-05-14 12:42:45 +02:00
Mike Yuan d9b8d86bcd core/service: remove unnecessary reset of notify_access_override
This already gets reset in service_enter_dead()
and service_start().
2024-05-14 00:49:59 +08:00
Yu Watanabe 2b699c2362 core/unit: use FOREACH_ELEMENT() to add dependencies for journal namespace instances
Follow-up for 06c0f569e9.
2024-05-10 18:11:25 +09:00
Yu Watanabe ae1cb17cef core/service: shorten code a bit
Follow-up for 026335e9aa.
2024-05-10 10:12:43 +09:00
Luca Boccassi 7e10dfae96 Merge pull request #32689 from YHNdnzj/cred-missing
core/exec-credential: complain louder if inherited credential is missing
2024-05-09 13:21:44 +02:00
Mike Yuan d99511add4 core/namespace: take char* const* for strv, use FOREACH_ARRAY 2024-05-09 17:02:19 +08:00
Mike Yuan 7b89efda6f core/unit: use FOREACH_ARRAY at one more place 2024-05-09 17:02:19 +08:00
Mike Yuan d08070f4e9 core/unit: cast unused retval to void 2024-05-09 17:02:18 +08:00
Mike Yuan 696a8ec0ff core/dbus-unit: correct argument alignment for SD_BUS_METHOD_WITH_ARGS 2024-05-09 17:02:18 +08:00
Mike Yuan 026335e9aa core/service: use switch for service_enter_start
Plus, add an assertion to ensure we're actually
using the start timestamp for the correct pid.
2024-05-08 00:17:54 +08:00
Mike Yuan dddc060286 core/execute: re-break function declaration of exec_spawn
Also rearrange some variable definitions. Note that
DECIMAL_STR_MAX() contains the size of NUL byte,
so +1 is dropped.
2024-05-08 00:16:54 +08:00
Mike Yuan 06c0f569e9 core/unit: use FOREACH_STRING where appropriate
Follow-up for 61628287bd
2024-05-08 00:16:36 +08:00
Mike Yuan 6b34871f5d core/exec-credential: complain louder if inherited credential is missing
Also document that a missing inherited credential
is not considered fatal.

Closes #32667
2024-05-07 22:02:42 +08:00
Mike Yuan d568c4c1a8 core/load-fragment: modernize config_parse_load_credential a bit 2024-05-07 21:58:16 +08:00
David Tardon af1690cfcc manager: pass the right error variable 2024-05-07 14:02:08 +02:00
David Tardon 6400084caa exec-invoke: pass the right error variable 2024-05-07 13:19:42 +02:00
David Tardon ac10f7e28c main: pass the right error variable 2024-05-07 13:18:10 +02:00
Zbigniew Jędrzejewski-Szmek 71322b95ad manager: resolve verb/noun mixup in log message
The word is used in "%s requested" so it should be a noun.
2024-05-07 09:42:47 +02:00
Daan De Meyer 7e0e6b50b4 core: Record ExecMainStartTimestamp before forking
Otherwise there's a chance the handover timestamp is less than the
start timestamp depending on the whims of the scheduler.

For non-forking services, we also propagate the start timestamp into
Service->main_exec_status to make sure it starts earlier than the
handoff timestamp.
2024-05-05 14:19:30 +02:00
Yu Watanabe 61628287bd journal: explicitly sync namespaced journals before stopping socket units
Otherwise, if a service unit that requests LogNamespace= stopped before
systemd-journald@.service is started, logs generated by the service will be
lost, as systemd-journald@.socket is stopped and
systemd-journald@.service will never started.

To prevent the issue, let's introduce another implicit dependency to
a oneshot service that explicitly synchronizes a namespaced journal file
when the log namespace is not needed anymore.

Fixes #32604.
2024-05-02 19:41:01 +02:00
Mike Yuan 8bd2f9415c core/selinux-access: use empty_to_na where appropriate 2024-05-02 13:36:52 +08:00
Daan De Meyer b7ad477879 reboot-util: Add some basic validation on reboot arguments
Let's only accept valid ASCII and put a size limit on reboot arguments.
2024-05-02 00:52:06 +09:00
Mike Yuan d69cba3bff core/dbus-manager: mark unit file state as outdated only if
some changes succeeded

Follow-up for a82b8b3dc8

We don't need to invalidate the unit file state
if all operations failed.

Also, emit UnitFilesChanged signal as long as
some operations succeeded.
2024-05-01 18:22:02 +08:00
Yu Watanabe 9d3d6c1e07 core/exec-credential: update comment 2024-05-01 15:58:20 +09:00
Daan De Meyer 5bcf0881a3 core: Fix file descriptor leak 2024-05-01 11:52:13 +09:00
Yu Watanabe 4e494e6aac tree-wise: several cleanups for logging
- drop unnecessary SYNTHETIC_ERRNO() when the logger does not propagate
  error code,
- drop unnecessary '%m' in error message when the error code is
  specified with SYNTHETIC_ERRNO(),
- add missing full stop at the end of log message,
- use RET_GATHER(),
- add missing ", ignoring.",
- upeercase the first letter, etc., etc...
2024-05-01 04:41:06 +09:00
Daan De Meyer 7a66f21556 core: Add systemd.crash_action= kernel command line argument
Required for integration tests to power off on PID 1 crashes. We
deprecate systemd.crash_reboot and related options by removing them
from the documentation but still parsing them.
2024-04-29 14:34:22 +02:00
Daan De Meyer ba4c69a0c6 core: Pass NULL error in dump_impl()
If mac_selinux_access_check() or bus_verify_bypass_dump_ratelimit_async()
fail, we goto "ratelimited" where we set a custom D-BUS error. In
"ratelimited", we call sd_bus_error_setf() which eventually hits an
assert_return(!bus_error_is_dirty()). Avoid hitting this assertion by
passing NULL as the error to mac_selinux_access_check() and
bus_verify_bypass_dump_ratelimit_async() since we will override the error
immediately anyway if either fails.

We modify both functions as well to allow passing a NULL error and fix
the argument name as well while we're at it.
2024-04-29 14:14:40 +02:00
Mike Yuan 119bc912a8 Merge pull request #32516 from YHNdnzj/core-cleanup
core: several cleanups
2024-04-27 19:43:27 +08:00
Dmitry V. Levin c309b9e9c3 treewide: fix a few typos in NEWS, docs, comments, and log messages 2024-04-27 12:11:13 +02:00