Commit Graph
9757 Commits
Author SHA1 Message Date
Daan De Meyer 1b275c2acd crash-handler: Add back notice log message
Fixes https://github.com/systemd/systemd/pull/33959#discussion_r1730987738
2024-08-26 16:36:39 +02:00
Mike Yuan daa78907af core: honor FileDescriptorName= too for Accept=yes sockets
So far we manually hardcoded $LISTEN_FDNAMES to "varlink" in various
varlink service units we ship, even though FileDescriptorName=varlink
is specified in associated socket units already, because
FileDescriptorName= is currently silently ignored when combined with
Accept=yes. Let's step away from this, which seems saner.

Note that this is technically a compat break, but a mostly negligible
one as there shall be few users setting FileDescriptorName= but
still expecting LISTEN_FDNAMES=connection in the actual executable.

Preparation for #34080
2024-08-26 15:40:15 +02:00
Mike Yuan 2234032c47 core: move check for combination of PAMName= + KillMode= to unit_verify_contexts()
While at it, allow "mixed" for all unit types too, i.e.
also apply ebc2259da1 to
socket/mount/swap units.
2024-08-26 14:52:25 +02:00
Mike Yuan bca5505839 core/socket: refuse MaxConnection=0 for Accept=no sockets too
This makes no sense at all, and we already refuse such setting
for Accept=yes sockets. I see no reason not to extend this to
Accept=no ones.
2024-08-26 14:52:25 +02:00
Mike Yuan f220d98945 core/socket: use UNIT_ISSET rather than _DEREF where suitable 2024-08-26 14:52:25 +02:00
Lennart Poettering 103018eceb main: make sure the ambient caps set is valid in case we fail to read it
We ignore failures when reading this after all. Hence we better leave
the memory properly initialized.
2024-08-22 18:36:59 +02:00
Lennart Poettering 88a26e1049 main: generate warning when we cannot reset caps
Follow-up for: #32937
2024-08-22 18:21:56 +02:00
Lennart Poettering b004393d70 core: rename original_ambient_set → saved_ambient_set
We call similar other fields in main.c (notably: rlimit stuff, env vars) "saved",
rather than "original". Hence stick to that kind of naming here too.

Follow-up for: #32937
2024-08-22 18:21:56 +02:00
Ivan Shapovalov b73c86c695 core/exec-invoke: document calling setpriority() after sched_setattr()
Fixes: 711a157738 ("core/exec-invoke: call setpriority() after sched_setattr()")
2024-08-22 04:25:29 +09:00
Lennart Poettering 300b7e7620 tree-wide: use isatty_safe() more 2024-08-20 11:11:53 +02:00
maia x. 010ea061fc namespace: Fix extension release memory leak
In apply_one_mount(), in the MOUNT_EXTENSION_DIRECTORY case,
char **extension_release was used as a return pointer twice but only
cleaned up once in the end. Fix it by removing duplicate code that
was causing this issue.

Fixes issue introduced in 55ea4ef096.
2024-08-20 09:40:52 +09:00
Yu Watanabe dc64f66756 Merge pull request #34022 from YHNdnzj/unit-is-filtered
core/unit: two trivial cleanups
2024-08-19 04:29:54 +09:00
Mike Yuan 6e0f959360 core/unit: unit_is_filtered() -> unit_passes_filter() and invert logic
Follow-up for 6d2984d21b

The current semantics of "filtered" in unit_is_filtered()
are actually the contrary of ListUnitsFiltered(). Let's
make things consistent, i.e. return true when the unit
shall be included.
2024-08-17 20:09:51 +02:00
Mike Yuan 6c8ade3066 core/unit: rename set_unit_path() -> setenv_unit_path()
The previous name is quite vague on what this precisely
do.
2024-08-17 18:52:42 +02:00
Mike Yuan ae5c4aa66e core/dbus-service: refuse bind mounting over /run/credentials/
The credential mounts should be managed singlehandedly by pid1.
Preparation for the future introduction of RefreshOnReload=credential,
where refreshing creds will be properly supported on reload.
2024-08-17 18:16:20 +02:00
Mike Yuan f31906ff0b core/dbus-service: some modernization for bus_service_method_mount()
Perform some checks earlier to avoid pointless polkit auth.

Plus, the missing unit_get_exec_context() shall not be
a formalized error. As it's our internal representation
and in the normal operation should never happen.
2024-08-17 18:09:54 +02:00
Daan De Meyer 2250c996cf core-varlink: Introduce manager_varlink_managed_oom_connect()
In the next commit, we'll introduce a varlink server for the user
manager. As preparation for that, let's introduce a new function to
initialize only the managed OOM connection whenever we send a managed
OOM update.
2024-08-14 14:21:48 +02:00
Mike Yuan c557f6f540 core-varlink: merge two FLAGS_SET() where appropriate 2024-08-14 14:19:47 +02:00
Daan De Meyer 32c9bf14ce taint: Add taint_strv() to get taints as an array 2024-08-14 14:18:40 +02:00
Daan De Meyer 406e41cdef core: Clean up includes a little 2024-08-14 14:18:40 +02:00
Daan De Meyer 6d2984d21b core: Introduce unit_is_filtered() 2024-08-14 14:18:40 +02:00
Daan De Meyer 14702b9c18 core: Use RateLimit struct to store ratelimits
This makes it easier to serialize these ratelimits with
JSON_BUILD_CALLBACK().
2024-08-14 14:18:40 +02:00
Ivan Shapovalov 711a157738 core/exec-invoke: call setpriority() after sched_setattr()
The nice value is part of struct sched_attr, and consequently invoking
sched_setattr() after setpriority() would clobber the nice value with
the default (as we are not setting it in struct sched_attr).

It would be best to combine both calls, but for now simply invoke
setpriority() after sched_setattr() to make sure Nice= remains effective
when used together with CPUSchedulingPolicy=.
2024-08-10 19:09:14 +02:00
Nick Rosbrook 82c482d573 core/unit: do not use unit path cache in unit_need_daemon_reload()
When unit_need_daemon_reload() calls unit_find_dropin_paths() to check
for new drop-in configs, the manager's unit path cache is used to limit
which directories are considered. If a new drop-in directory is created,
it may not be in the unit path cache, and hence unit_need_daemon_reload()
may return false, despite a new drop-in being present. However, if a
unit path cache is not given to unit_file_find_dropin_paths() at all,
then it behaves as if the target path was found in the unit path cache.

So, to fix this, adapt unit_find_dropin_paths() to take a boolean
argument indicating whether or not to pass along the unit path cache.
Set this to false in unit_need_daemon_reload().

Fixes #31752
2024-08-09 19:25:42 +09:00
Daan De Meyer 570a11eb9d crash-handler: Drop 10s sleep before we spawn the crash shell
It pointlessly delays getting to the crash shell so let's drop the
10s sleep.
2024-08-07 21:26:53 +02:00
Daan De Meyer bc3477fdc5 crash-handler: Call vhangup on /dev/console before spawning crash shell
When pid 1 crashes, the getty unit for the console will happily keep
running which means we end up with two shells competing for the same
tty. Let's call vhangup on /dev/console to kill every other process
attached to the console before we spawn the crash shell. The getty
units have Restart=always but lucky for us, pid 1 just crashed in fire
and flames so it isn't actually able to restart the getty unit.
2024-08-07 21:24:57 +02:00
Mike Yuan 09001a2c64 core/exec-credential: do not use unlink_and_free for relative path under dfd 2024-08-04 06:51:52 +02:00
Mike Yuan 4c00458e99 core/exec-credential: emit correct error on invalid cred source
The (!source && !search_path) branch is effectively not reached,
but rather confusing. Let's return -EINVAL properly.
2024-08-04 06:51:28 +02:00
Mike Yuan 85b265c964 core/exec-credential: use struct load_cred_args everywhere
We currently duplicate the same set of params for every funcs.
Let's unify this, and make things more manageable.
2024-08-04 06:51:28 +02:00
Mike Yuan 43705cceb8 core/exec-credential: use maybe_decrypt_and_write_credential() for SetCred= too 2024-08-04 06:51:28 +02:00
Mike Yuan ef0d7b0ec9 core/exec-credential: drop misleading comment regarding EEXIST
Follow-up for 2c2ed3272b

As explained in the referenced commit, we shall never get EEXIST
in the first place.
2024-08-04 06:51:28 +02:00
Mike Yuan 6a6e8b79cc core/exec-credential: trivial coding style cleanup 2024-08-04 06:51:28 +02:00
Mike Yuan 9db676d6bf core/dbus-execute: normalize "rename" arg properly
Follow-up for 40dd2a1c24

Addresses https://github.com/systemd/systemd/pull/33916#discussion_r1702616229
2024-08-04 06:51:25 +02:00
Mike Yuan ce31dbf445 core/service: drop redundant flush_n_restarts indicator
Now that we track auto-restarts with a dedicated state,
there's no need for a separate variable for this.

I also took the chance to reorder some struct members.
2024-08-04 09:37:59 +09:00
Mike Yuan 9be46b1da8 core/execute-serialize: use serialize_item_escaped() for external paths
Otherwise, read_stripped_line() would spuriously drop trailing spaces.

Fixes #33924
2024-08-03 22:49:59 +02:00
Mike Yuan f0fdd13c2f core/execute-serialize: drop extraneous '=' in ip-{in,e}gress serialization 2024-08-03 22:39:44 +02:00
Mike Yuan 1391f149f0 core/service: actually allow to "hurry up" auto restarts
unit_start() advertises that start requests don't get suppressed,
so that it could be used to manually speed up auto restarts.
However, service_start() so far rejected this, stating that
clients should issue restart request in order to trigger
BindsTo=/OnFailure=.

That seems to be a red herring though, because for a long time
the service states between auto-restarts were buggy (#27594).
With the introduction of RestartMode=direct, the behavior
is sane again and customizable, hence I see no reason to refuse
this anymore. Whether those deps are triggered solely depends
on RestartMode= now.

Plus, filter out some intermediate states that should never
be seen in service_start().

Fixes #33890
2024-08-03 13:03:28 +02:00
Yu Watanabe 74d1ee0373 core: refuse credentials with invalid names matching with glob
Even if the glob pattern is valid, the pattern may match credentials
with invalid names. So, we need to check the names of the found
credentials.

Follow-up for 947c4d3952.
2024-08-03 14:25:35 +09:00
Yu Watanabe 40dd2a1c24 core: make ImportCredentialEx= DBus property support without renaming
Note that the conf parser for ImportCredential= checks in the same way.

Follow-up for 831f208783.
2024-08-03 14:20:07 +09:00
Yu Watanabe 564547d295 Merge pull request #33911 from YHNdnzj/cgroup-setup-cleanup
cgroup-setup/util: several cleanups; make use of cgroup.kill on client request
2024-08-03 06:20:02 +09:00
Yu Watanabe af7b3851ea core/execute: fix typo
Follow-up for 628c214656.
2024-08-03 05:50:50 +09:00
Mike Yuan ba16a93db4 core/unit: utilize cgroup.kill on client request + SIGKILL 2024-08-02 16:36:09 +02:00
Mike Yuan 5ffa9490d6 core/unit: modernize log_kill() too 2024-08-02 16:36:09 +02:00
Mike Yuan 95e631da43 core/unit: unexport cg_kill log funcs, rather take in bool
It seems unnecessary to duplicate the func ptrs everywhere.
2024-08-02 16:36:08 +02:00
Mike Yuan ea25672de5 cgroup-setup: move cg_{,un}install_release_agent from cgroup-util
They're pid1-specific, so move them out of basic/.
2024-08-02 16:36:07 +02:00
Mike Yuan 3386f66200 cgroup-setup: drop unused cg_migrate_callback for cg_attach_everywhere()
While at it, move the typedef from cgroup-util to -setup.
2024-08-02 14:47:39 +02:00
Mike Yuan 4c523d62d2 core/socket: stop hardcoding every service inactive state
History (c068650fcf,
941a12dcba) has proven
that we're not good at keeping socket and service states
in sync. Instead, let's query the high-level unit_active_state()
first, and only hardcode the two special auto-restart
service states.

Additionally, allow returning to listening state on SERVICE_CLEANING.
2024-07-31 21:56:28 +02:00
Mike Yuan 067c91fcb8 core/cgroup: use UNIT_IS_INACTIVE_OR_FAILED where appropriate 2024-07-31 21:40:28 +02:00
Mike Yuan 8574b7940b core/unit: merge use of LOG_CONTEXT_SET_LOG_LEVEL into LOG_CONTEXT_PUSH_UNIT
No functional change, since LOG_CONTEXT_PUSH_UNIT is only used
in exec_spawn().
2024-07-31 21:40:28 +02:00
Mike Yuan c4c416b109 core: clean up ambient capability logging
Follow-up for e0ebc81b2d
2024-07-31 21:40:28 +02:00