tree-wide: Add allow_pidfd argument to bus_append_scope_pidref()

This commit is contained in:
Daan De Meyer
2024-03-22 17:03:35 +01:00
parent 8ba3efed86
commit 66b574b0a2
7 changed files with 20 additions and 34 deletions

View File

@@ -4300,10 +4300,7 @@ int manager_start_scope(
if (r < 0)
return r;
if (allow_pidfd)
r = bus_append_scope_pidref(m, pidref);
else
r = sd_bus_message_append(m, "(sv)", "PIDs", "au", 1, (uint32_t) pidref->pid);
r = bus_append_scope_pidref(m, pidref, allow_pidfd);
if (r < 0)
return r;

View File

@@ -385,7 +385,7 @@ static int machine_start_scope(
if (r < 0)
return r;
r = bus_append_scope_pidref(m, &machine->leader);
r = bus_append_scope_pidref(m, &machine->leader, /* allow_pidfd = */ true);
if (r < 0)
return r;

View File

@@ -297,15 +297,12 @@ int allocate_scope(
description = strjoina("Container ", machine_name);
if (allow_pidfd) {
_cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
r = pidref_set_pid(&pidref, pid);
if (r < 0)
return log_error_errno(r, "Failed to allocate PID reference: %m");
_cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
r = pidref_set_pid(&pidref, pid);
if (r < 0)
return log_error_errno(r, "Failed to allocate PID reference: %m");
r = bus_append_scope_pidref(m, &pidref);
} else
r = sd_bus_message_append(m, "(sv)", "PIDs", "au", 1, (uint32_t) pid);
r = bus_append_scope_pidref(m, &pidref, allow_pidfd);
if (r < 0)
return bus_log_create_error(r);

View File

@@ -1265,18 +1265,13 @@ static int transient_scope_set_properties(sd_bus_message *m, bool allow_pidfd) {
if (r < 0)
return r;
if (allow_pidfd) {
_cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
_cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
r = pidref_set_self(&pidref);
if (r < 0)
return r;
r = pidref_set_self(&pidref);
if (r < 0)
return r;
r = bus_append_scope_pidref(m, &pidref);
} else
r = sd_bus_message_append(
m, "(sv)",
"PIDs", "au", 1, getpid_cached());
r = bus_append_scope_pidref(m, &pidref, allow_pidfd);
if (r < 0)
return bus_log_create_error(r);

View File

@@ -2821,13 +2821,13 @@ int bus_append_unit_property_assignment_many(sd_bus_message *m, UnitType t, char
return 0;
}
int bus_append_scope_pidref(sd_bus_message *m, const PidRef *pidref) {
int bus_append_scope_pidref(sd_bus_message *m, const PidRef *pidref, bool allow_pidfd) {
assert(m);
if (!pidref_is_set(pidref))
return -ESRCH;
if (pidref->fd >= 0)
if (pidref->fd >= 0 && allow_pidfd)
return sd_bus_message_append(
m, "(sv)",
"PIDFDs", "ah", 1, pidref->fd);

View File

@@ -26,7 +26,7 @@ int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u);
int bus_append_unit_property_assignment(sd_bus_message *m, UnitType t, const char *assignment);
int bus_append_unit_property_assignment_many(sd_bus_message *m, UnitType t, char **l);
int bus_append_scope_pidref(sd_bus_message *m, const PidRef *pidref);
int bus_append_scope_pidref(sd_bus_message *m, const PidRef *pidref, bool allow_pidfd);
int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet);

View File

@@ -61,15 +61,12 @@ int start_transient_scope(sd_bus *bus, const char *machine_name, bool allow_pidf
"AddRef", "b", 1,
"CollectMode", "s", "inactive-or-failed");
if (allow_pidfd) {
_cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
r = pidref_set_pid(&pidref, getpid_cached());
if (r < 0)
return log_error_errno(r, "Failed to allocate PID reference: %m");
_cleanup_(pidref_done) PidRef pidref = PIDREF_NULL;
r = pidref_set_self(&pidref);
if (r < 0)
return log_error_errno(r, "Failed to allocate PID reference: %m");
r = bus_append_scope_pidref(m, &pidref);
} else
r = sd_bus_message_append(m, "(sv)", "PIDs", "au", 1, getpid_cached());
r = bus_append_scope_pidref(m, &pidref, allow_pidfd);
if (r < 0)
return bus_log_create_error(r);