1
0
mirror of https://github.com/systemd/systemd synced 2026-04-06 15:14:49 +02:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Yu Watanabe
39adbedafc
various: assorted cleanups for safe_fork (#39661) 2025-11-10 18:40:16 +09:00
Yu Watanabe
f50f785737 dissect: getenv_fstype() is unused when LIBBLKID support is disabled
Follow-up for aad0d11e7c6f1f7dcc7b00173140c74b8abf88cc.
2025-11-10 18:38:32 +09:00
Mike Yuan
1be6068c48
notify: raise log level for safe_fork() 2025-11-10 03:02:47 +01:00
Mike Yuan
d9f993dd86
hostname-setup: prefix helper process name with "sd-" 2025-11-10 02:55:40 +01:00
Mike Yuan
686117e5b0
process-util: prefix FORK_PID_ONLY with _ to signify it is internal 2025-11-10 02:44:57 +01:00
5 changed files with 9 additions and 6 deletions

View File

@ -1662,7 +1662,7 @@ int pidref_safe_fork_full(
}
if (ret_pid) {
if (FLAGS_SET(flags, FORK_PID_ONLY))
if (FLAGS_SET(flags, _FORK_PID_ONLY))
*ret_pid = PIDREF_MAKE_FROM_PID(pid);
else {
r = pidref_set_pid(ret_pid, pid);
@ -1840,7 +1840,7 @@ int pidref_safe_fork_full(
freeze();
if (ret_pid) {
if (FLAGS_SET(flags, FORK_PID_ONLY))
if (FLAGS_SET(flags, _FORK_PID_ONLY))
*ret_pid = PIDREF_MAKE_FROM_PID(getpid_cached());
else {
r = pidref_set_self(ret_pid);
@ -1869,7 +1869,7 @@ int safe_fork_full(
* a pidref to the caller. */
assert(!FLAGS_SET(flags, FORK_DETACH) || !ret_pid);
r = pidref_safe_fork_full(name, stdio_fds, except_fds, n_except_fds, flags|FORK_PID_ONLY, ret_pid ? &pidref : NULL);
r = pidref_safe_fork_full(name, stdio_fds, except_fds, n_except_fds, flags|_FORK_PID_ONLY, ret_pid ? &pidref : NULL);
if (r < 0 || !ret_pid)
return r;

View File

@ -187,7 +187,8 @@ typedef enum ForkFlags {
FORK_NEW_NETNS = 1 << 20, /* Run child in its own network namespace 💣 DO NOT USE IN THREADED PROGRAMS! 💣 */
FORK_NEW_PIDNS = 1 << 21, /* Run child in its own PID namespace 💣 DO NOT USE IN THREADED PROGRAMS! 💣 */
FORK_FREEZE = 1 << 22, /* Don't return in child, just call freeze() instead */
FORK_PID_ONLY = 1 << 23, /* Don't open a pidfd referencing the child process */
_FORK_PID_ONLY = 1 << 23, /* Don't open a pidfd referencing the child process */
} ForkFlags;
int pidref_safe_fork_full(

View File

@ -520,7 +520,7 @@ static int action_fork(char *const *_command) {
/* stdio_fds= */ (const int[]) { -EBADF, -EBADF, STDERR_FILENO },
/* except_fds= */ NULL,
/* n_except_fds= */ 0,
/* flags= */ FORK_REARRANGE_STDIO,
/* flags= */ FORK_REARRANGE_STDIO|FORK_LOG,
&child);
if (r < 0)
return log_error_errno(r, "Failed to fork child in order to execute '%s': %m", c);

View File

@ -118,6 +118,7 @@ int dissect_fstype_ok(const char *fstype) {
return false;
}
#if HAVE_BLKID
static const char *getenv_fstype(PartitionDesignator d) {
if (d < 0 ||
@ -128,6 +129,7 @@ static const char *getenv_fstype(PartitionDesignator d) {
char *v = strjoina("SYSTEMD_DISSECT_FSTYPE_", partition_designator_to_string(d));
return secure_getenv(ascii_strupper(v));
}
#endif
int probe_sector_size(int fd, uint32_t *ret) {

View File

@ -377,7 +377,7 @@ int pidref_gethostname_full(PidRef *pidref, GetHostnameFlags flags, char **ret)
return -errno;
_cleanup_(pidref_done_sigkill_wait) PidRef child = PIDREF_NULL;
r = pidref_safe_fork("(gethostname)", FORK_RESET_SIGNALS|FORK_DEATHSIG_SIGKILL, &child);
r = pidref_safe_fork("(sd-gethostname)", FORK_RESET_SIGNALS|FORK_DEATHSIG_SIGKILL, &child);
if (r < 0)
return r;
if (r == 0) {