From: Lennart Poettering Date: Wed, 15 Mar 2023 14:01:11 +0000 (+0100) Subject: userdbd: make use of FORK_CLOSE_ALL_FDS + FORK_REOPEN_LOG where we can X-Git-Tag: v254-rc1~1005^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=755424e94ff51f848e5202a0b7ac41e485c93691;p=thirdparty%2Fsystemd.git userdbd: make use of FORK_CLOSE_ALL_FDS + FORK_REOPEN_LOG where we can --- diff --git a/src/userdb/userdbd-manager.c b/src/userdb/userdbd-manager.c index 81f327ef2e6..4e70f4259b2 100644 --- a/src/userdb/userdbd-manager.c +++ b/src/userdb/userdbd-manager.c @@ -156,23 +156,18 @@ static int start_one_worker(Manager *m) { fixed = set_size(m->workers_fixed) < USERDB_WORKERS_MIN; - r = safe_fork("(sd-worker)", FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_LOG, &pid); + r = safe_fork_full( + "(sd-worker)", + /* stdio_fds= */ NULL, + &m->listen_fd, 1, + FORK_RESET_SIGNALS|FORK_DEATHSIG|FORK_REOPEN_LOG|FORK_LOG|FORK_CLOSE_ALL_FDS, + &pid); if (r < 0) return log_error_errno(r, "Failed to fork new worker child: %m"); if (r == 0) { char pids[DECIMAL_STR_MAX(pid_t)]; /* Child */ - log_close(); - - r = close_all_fds(&m->listen_fd, 1); - if (r < 0) { - log_error_errno(r, "Failed to close fds in child: %m"); - _exit(EXIT_FAILURE); - } - - log_open(); - if (m->listen_fd == 3) { r = fd_cloexec(3, false); if (r < 0) {