diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c index c5d88dfd82..6c7cff845d 100644 --- a/src/core/exec-invoke.c +++ b/src/core/exec-invoke.c @@ -5035,7 +5035,7 @@ int exec_invoke( int ngids = 0, ngids_after_pam = 0; int socket_fd = -EBADF, named_iofds[3] = EBADF_TRIPLET; _cleanup_close_ int bpffs_socket_fd = -EBADF, bpffs_errno_pipe = -EBADF; - size_t n_storage_fds, n_socket_fds, n_extra_fds; + size_t n_socket_fds, n_stashed_fds; _cleanup_(pidref_done_sigkill_wait) PidRef bpffs_pidref = PIDREF_NULL; assert(command); @@ -5066,13 +5066,12 @@ int exec_invoke( return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Got no socket."); socket_fd = params->fds[0]; - n_storage_fds = n_socket_fds = n_extra_fds = 0; + n_socket_fds = n_stashed_fds = 0; } else { n_socket_fds = params->n_socket_fds; - n_storage_fds = params->n_storage_fds; - n_extra_fds = params->n_extra_fds; + n_stashed_fds = params->n_stashed_fds; } - n_fds = n_socket_fds + n_storage_fds + n_extra_fds; + n_fds = n_socket_fds + n_stashed_fds; r = exec_context_named_iofds(context, params, named_iofds); if (r < 0) { diff --git a/src/core/execute-serialize.c b/src/core/execute-serialize.c index e8bc55462d..8033ecdb8e 100644 --- a/src/core/execute-serialize.c +++ b/src/core/execute-serialize.c @@ -1090,19 +1090,13 @@ static int exec_parameters_serialize(const ExecParameters *p, const ExecContext return r; } - if (p->n_storage_fds > 0) { - r = serialize_item_format(f, "exec-parameters-n-storage-fds", "%zu", p->n_storage_fds); + if (p->n_stashed_fds > 0) { + r = serialize_item_format(f, "exec-parameters-n-stashed-fds", "%zu", p->n_stashed_fds); if (r < 0) return r; } - if (p->n_extra_fds > 0) { - r = serialize_item_format(f, "exec-parameters-n-extra-fds", "%zu", p->n_extra_fds); - if (r < 0) - return r; - } - - r = serialize_fd_many(f, fds, "exec-parameters-fds", p->fds, p->n_socket_fds + p->n_storage_fds + p->n_extra_fds); + r = serialize_fd_many(f, fds, "exec-parameters-fds", p->fds, p->n_socket_fds + p->n_stashed_fds); if (r < 0) return r; @@ -1283,47 +1277,37 @@ static int exec_parameters_deserialize(ExecParameters *p, FILE *f, FDSet *fds) { if (p->n_socket_fds > nr_open) return -EINVAL; /* too many, someone is playing games with us */ - } else if ((val = startswith(l, "exec-parameters-n-storage-fds="))) { + } else if ((val = startswith(l, "exec-parameters-n-stashed-fds="))) { if (p->fds) return -EINVAL; /* Already received */ - r = safe_atozu(val, &p->n_storage_fds); + r = safe_atozu(val, &p->n_stashed_fds); if (r < 0) return r; - if (p->n_storage_fds > nr_open) - return -EINVAL; /* too many, someone is playing games with us */ - } else if ((val = startswith(l, "exec-parameters-n-extra-fds="))) { - if (p->fds) - return -EINVAL; /* Already received */ - - r = safe_atozu(val, &p->n_extra_fds); - if (r < 0) - return r; - - if (p->n_extra_fds > nr_open) + if (p->n_stashed_fds > nr_open) return -EINVAL; /* too many, someone is playing games with us */ } else if ((val = startswith(l, "exec-parameters-fds="))) { - if (p->n_socket_fds + p->n_storage_fds + p->n_extra_fds == 0) + if (p->n_socket_fds + p->n_stashed_fds == 0) return log_warning_errno( SYNTHETIC_ERRNO(EINVAL), "Got exec-parameters-fds= without " - "prior exec-parameters-n-socket-fds= or exec-parameters-n-storage-fds= or exec-parameters-n-extra-fds="); - if (p->n_socket_fds + p->n_storage_fds + p->n_extra_fds > nr_open) + "prior exec-parameters-n-socket-fds= or exec-parameters-n-stashed-fds="); + if (p->n_socket_fds + p->n_stashed_fds > nr_open) return -EINVAL; /* too many, someone is playing games with us */ if (p->fds) return -EINVAL; /* duplicated */ - p->fds = new(int, p->n_socket_fds + p->n_storage_fds + p->n_extra_fds); + p->fds = new(int, p->n_socket_fds + p->n_stashed_fds); if (!p->fds) return log_oom_debug(); /* Ensure we don't leave any FD uninitialized on error, it makes the fuzzer sad */ - FOREACH_ARRAY(i, p->fds, p->n_socket_fds + p->n_storage_fds + p->n_extra_fds) + FOREACH_ARRAY(i, p->fds, p->n_socket_fds + p->n_stashed_fds) *i = -EBADF; - r = deserialize_fd_many(fds, val, p->n_socket_fds + p->n_storage_fds + p->n_extra_fds, p->fds); + r = deserialize_fd_many(fds, val, p->n_socket_fds + p->n_stashed_fds, p->fds); if (r < 0) continue; @@ -1521,9 +1505,9 @@ static int exec_parameters_deserialize(ExecParameters *p, FILE *f, FDSet *fds) { log_warning("Failed to parse serialized line, ignoring: %s", l); } - /* Bail out if we got exec-parameters-n-{socket/storage}-fds= but no corresponding + /* Bail out if we got exec-parameters-n-{socket/stashed}-fds= but no corresponding * exec-parameters-fds= */ - if (p->n_socket_fds + p->n_storage_fds > 0 && !p->fds) + if (p->n_socket_fds + p->n_stashed_fds > 0 && !p->fds) return -EINVAL; return 0; diff --git a/src/core/execute.c b/src/core/execute.c index e0c0421a21..baadad9377 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -487,7 +487,7 @@ int exec_spawn( assert(context); assert(params); assert(!params->fds || FLAGS_SET(params->flags, EXEC_PASS_FDS)); - assert(params->fds || (params->n_socket_fds + params->n_storage_fds + params->n_extra_fds == 0 && !params->fd_names)); + assert(params->fds || (params->n_socket_fds + params->n_stashed_fds == 0 && !params->fd_names)); assert(!params->files_env); /* We fill this field, ensure it comes NULL-initialized to us */ assert(ret); @@ -2826,7 +2826,7 @@ void exec_params_deep_clear(ExecParameters *p) { * to be fully cleaned up to make sanitizers and analyzers happy, as opposed as the shallow clean * function above. */ - close_many_unset(p->fds, p->n_socket_fds + p->n_storage_fds + p->n_extra_fds); + close_many_unset(p->fds, p->n_socket_fds + p->n_stashed_fds); p->cgroup_path = mfree(p->cgroup_path); diff --git a/src/core/execute.h b/src/core/execute.h index 1090e3fa3d..2c79a37d54 100644 --- a/src/core/execute.h +++ b/src/core/execute.h @@ -399,8 +399,7 @@ typedef struct ExecParameters { int *fds; char **fd_names; size_t n_socket_fds; - size_t n_storage_fds; - size_t n_extra_fds; + size_t n_stashed_fds; char *cgroup_path; uint64_t cgroup_id; diff --git a/src/core/fuzz-execute-serialize.c b/src/core/fuzz-execute-serialize.c index 8114a67eef..1e72918a39 100644 --- a/src/core/fuzz-execute-serialize.c +++ b/src/core/fuzz-execute-serialize.c @@ -62,8 +62,8 @@ static void exec_fuzz_one(FILE *f, FDSet *fdset) { params.user_lookup_fd = -EBADF; params.bpf_restrict_fs_map_fd = -EBADF; if (!params.fds) - params.n_socket_fds = params.n_storage_fds = params.n_extra_fds = 0; - for (size_t i = 0; params.fds && i < params.n_socket_fds + params.n_storage_fds + params.n_extra_fds; i++) + params.n_socket_fds = params.n_stashed_fds = 0; + for (size_t i = 0; params.fds && i < params.n_socket_fds + params.n_stashed_fds; i++) params.fds[i] = -EBADF; exec_command_done_array(&command, /* n= */ 1); diff --git a/src/core/service.c b/src/core/service.c index 9350cdae89..46aabdfe42 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1451,8 +1451,7 @@ static int service_collect_fds( int **fds, char ***fd_names, size_t *n_socket_fds, - size_t *n_storage_fds, - size_t *n_extra_fds) { + size_t *n_stashed_fds) { _cleanup_strv_free_ char **rfd_names = NULL; _cleanup_free_ int *rfds = NULL; @@ -1463,8 +1462,7 @@ static int service_collect_fds( assert(fds); assert(fd_names); assert(n_socket_fds); - assert(n_storage_fds); - assert(n_extra_fds); + assert(n_stashed_fds); if (s->socket_fd >= 0) { Socket *sock = ASSERT_PTR(SOCKET(UNIT_DEREF(s->accept_socket))); @@ -1548,8 +1546,7 @@ static int service_collect_fds( *fds = TAKE_PTR(rfds); *fd_names = TAKE_PTR(rfd_names); *n_socket_fds = rn_socket_fds; - *n_storage_fds = s->n_fd_store; - *n_extra_fds = s->n_extra_fds; + *n_stashed_fds = s->n_fd_store + s->n_extra_fds; return 0; } @@ -1742,8 +1739,7 @@ static int service_spawn_internal( &exec_params.fds, &exec_params.fd_names, &exec_params.n_socket_fds, - &exec_params.n_storage_fds, - &exec_params.n_extra_fds); + &exec_params.n_stashed_fds); if (r < 0) return r; @@ -1751,7 +1747,7 @@ static int service_spawn_internal( exec_params.flags |= EXEC_PASS_FDS; - log_unit_debug(UNIT(s), "Passing %zu fds to service", exec_params.n_socket_fds + exec_params.n_storage_fds + exec_params.n_extra_fds); + log_unit_debug(UNIT(s), "Passing %zu fds to service", exec_params.n_socket_fds + exec_params.n_stashed_fds); } if (!FLAGS_SET(exec_params.flags, EXEC_IS_CONTROL) && s->type == SERVICE_EXEC) {