The branch, master has been updated via 5955dc1e4fd smbd: set long process name of smbd child processes to "smbd: <CLIENT IP>" via fc57b88e6a9 smbd: remove process shortname arg from reinit_after_fork() via 38ba7d1476c smbd: remove process shortname arg from smbd_reinit_after_fork() via 62cc0bbab0a smbd: explicitly call process_set_title() via 096295a6fe3 winbindd: Use process_set_title() instead of setproctitle() via 1b62dfa68d0 s4/samba: use process_set_title() via 969e062724f lib/util: use process_set_title() in tfork() via 14571c5cc47 smbd: prepare smbd for calling setproctitle() via 19c82c19c00 lib/util: add process_set_title() from 987cba90573 CVE-2022-37966 python:/tests/krb5: call sys.path.insert(0, "bin/python") before any other imports
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 5955dc1e4fde7c1335cae5c7fd9bef71fd3fab3c Author: Ralph Boehme <s...@samba.org> Date: Fri Dec 2 09:49:11 2022 +0100 smbd: set long process name of smbd child processes to "smbd: <CLIENT IP>" The resulting process listings, depending on the format chosen for the process name, show the relevant smbd processes like this: $ ps faxo pid,uid,comm | egrep "\_.*smbd" | grep -v grep 1690322 0 \_ smbd 1690326 0 \_ smbd-notifyd 1690327 0 \_ smbd-cleanupd 1690337 0 \_ smbd[::1] $ ps faxo pid,uid,args | egrep "\_.*smbd" | grep -v grep 1690322 0 \_ ./bin/smbd -D 1690326 0 \_ smbd: notifyd 1690327 0 \_ smbd: cleanupd 1690337 0 \_ smbd: client [::1] Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Wed Dec 14 02:47:24 UTC 2022 on sn-devel-184 commit fc57b88e6a93d59ad243364a513d33cecf66e4ab Author: Ralph Boehme <s...@samba.org> Date: Sat Dec 3 17:04:33 2022 +0100 smbd: remove process shortname arg from reinit_after_fork() All callers pass NULL anyway, so it isn't used anymore. Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 38ba7d1476c1bdb5bbde70c45b47d12ab1699516 Author: Ralph Boehme <s...@samba.org> Date: Sat Dec 3 16:59:39 2022 +0100 smbd: remove process shortname arg from smbd_reinit_after_fork() All callers already do this explicitly by calling process_set_title(). Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 62cc0bbab0a5146f7fdc8b3865b662b0f55f89d2 Author: Ralph Boehme <s...@samba.org> Date: Sat Dec 3 16:56:20 2022 +0100 smbd: explicitly call process_set_title() Currently setting the shortname is achieved via the final arg to smbd_reinit_after_fork(), but I'm going to remove that arg soon. Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 096295a6fe348937a8f23b5064f14896b59e35e6 Author: Ralph Boehme <s...@samba.org> Date: Thu Dec 1 18:18:29 2022 +0100 winbindd: Use process_set_title() instead of setproctitle() Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 1b62dfa68d07a2cdec76b635e82fd9b099a43c41 Author: Ralph Boehme <s...@samba.org> Date: Fri Dec 2 15:39:25 2022 +0100 s4/samba: use process_set_title() Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 969e062724f39d7406fddfd335533f8c24cb641d Author: Ralph Boehme <s...@samba.org> Date: Fri Dec 2 15:38:44 2022 +0100 lib/util: use process_set_title() in tfork() Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 14571c5cc47ccc1d168f38c65d786b61492485d9 Author: Ralph Boehme <s...@samba.org> Date: Fri Dec 2 15:36:39 2022 +0100 smbd: prepare smbd for calling setproctitle() Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 19c82c19c009eefe975ae95c8b709fc93f5f4c39 Author: Ralph Boehme <s...@samba.org> Date: Fri Dec 2 15:17:20 2022 +0100 lib/util: add process_set_title() Signed-off-by: Ralph Boehme <s...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: lib/util/tfork.c | 7 +++---- lib/util/util_process.c | 32 +++++++++++++++++++++++++++++--- lib/util/util_process.h | 13 +++++++++++++ source3/include/proto.h | 6 ++---- source3/lib/background.c | 2 +- source3/lib/util.c | 7 +------ source3/nmbd/asyncdns.c | 2 +- source3/nmbd/nmbd.c | 2 +- source3/printing/print_cups.c | 2 +- source3/rpc_server/rpc_host.c | 2 +- source3/smbd/scavenger.c | 3 ++- source3/smbd/server.c | 21 ++++++++++++++++----- source3/smbd/server_exit.c | 4 ++-- source3/smbd/smb1_process.c | 5 +++-- source3/torture/test_g_lock.c | 6 +++--- source3/winbindd/winbindd.c | 5 +++-- source3/winbindd/winbindd_dual.c | 7 ++++--- source4/samba/process_prefork.c | 20 ++++++-------------- source4/samba/process_standard.c | 14 ++------------ 19 files changed, 94 insertions(+), 66 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/util/tfork.c b/lib/util/tfork.c index d64c7174fbf..9867543702e 100644 --- a/lib/util/tfork.c +++ b/lib/util/tfork.c @@ -572,8 +572,8 @@ static pid_t tfork_start_waiter_and_worker(struct tfork_state *state, /* * The "waiter" child. */ - setproctitle("tfork waiter process"); - prctl_set_comment("tfork waiter"); + process_set_title("tfork waiter", "tfork waiter proces"); + CatchSignal(SIGCHLD, SIG_DFL); close(status_sp_caller_fd); @@ -605,8 +605,7 @@ static pid_t tfork_start_waiter_and_worker(struct tfork_state *state, return 0; } state->worker_pid = pid; - setproctitle("tfork waiter process(%d)", pid); - prctl_set_comment("tfork(%d)", pid); + process_set_title("tfork(%d)", "tfork waiter process(%d)", pid); close(ready_pipe_worker_fd); diff --git a/lib/util/util_process.c b/lib/util/util_process.c index bb5dc15fa98..4b13c591309 100644 --- a/lib/util/util_process.c +++ b/lib/util/util_process.c @@ -26,16 +26,42 @@ #include <sys/prctl.h> #endif -int prctl_set_comment(const char *comment_format, ...) +void process_set_title(const char *short_format, const char *long_format, ...) { #if defined(HAVE_PRCTL) && defined(PR_SET_NAME) + if (short_format != NULL) { + char short_comment[16] = {0,}; + va_list ap; + + va_start(ap, long_format); + vsnprintf(short_comment, sizeof(short_comment), short_format, ap); + va_end(ap); + + prctl(PR_SET_NAME, (unsigned long) short_comment, 0, 0, 0); + } +#endif + + if (long_format != NULL) { + char long_comment[256] = {0,}; + va_list ap; + + va_start(ap, long_format); + vsnprintf(long_comment, sizeof(long_comment), long_format, ap); + va_end(ap); + + setproctitle("%s", long_comment); + } +} + +int prctl_set_comment(const char *comment_format, ...) +{ char comment[16]; va_list ap; + va_start(ap, comment_format); vsnprintf(comment, sizeof(comment), comment_format, ap); va_end(ap); - return prctl(PR_SET_NAME, (unsigned long) comment, 0, 0, 0); -#endif + process_set_title("%s", "%s", comment); return 0; } diff --git a/lib/util/util_process.h b/lib/util/util_process.h index 5b337d32aec..ccb2a752232 100644 --- a/lib/util/util_process.h +++ b/lib/util/util_process.h @@ -34,4 +34,17 @@ */ int prctl_set_comment(const char *comment_format, ...) PRINTF_ATTRIBUTE(1,2); +/** + * @brief Set the process comment name and longname + * + * @param[in] short_format The comment to set which shouldn't be longer than 16 + * 16 characters (including \0). + * @param[in] long_format The format string and arguments to produce the long + * form of the process name. + * + * @return -1 on error, 0 on success. + */ +void process_set_title(const char *short_format, const char *long_format, ...) + PRINTF_ATTRIBUTE(1,3) PRINTF_ATTRIBUTE(2,3); + #endif diff --git a/source3/include/proto.h b/source3/include/proto.h index 3d3cd93d5bc..bbd45c536ff 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -301,12 +301,10 @@ NTSTATUS init_before_fork(void); int parent_watch_fd(void); NTSTATUS reinit_after_fork(struct messaging_context *msg_ctx, struct tevent_context *ev_ctx, - bool parent_longlived, - const char *comment); + bool parent_longlived); NTSTATUS smbd_reinit_after_fork(struct messaging_context *msg_ctx, struct tevent_context *ev_ctx, - bool parent_longlived, - const char *comment); + bool parent_longlived); void *malloc_(size_t size); void *Realloc(void *p, size_t size, bool free_old_on_error); void add_to_large_array(TALLOC_CTX *mem_ctx, size_t element_size, diff --git a/source3/lib/background.c b/source3/lib/background.c index 74f7496d4f6..cf6cc3abaa0 100644 --- a/source3/lib/background.c +++ b/source3/lib/background.c @@ -176,7 +176,7 @@ static void background_job_waited(struct tevent_req *subreq) close(fds[0]); - status = reinit_after_fork(state->msg, state->ev, true, NULL); + status = reinit_after_fork(state->msg, state->ev, true); if (NT_STATUS_IS_OK(status)) { res = state->fn(state->private_data); } else { diff --git a/source3/lib/util.c b/source3/lib/util.c index 912ce1d3004..eef76662f45 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -429,8 +429,7 @@ static void reinit_after_fork_pipe_handler(struct tevent_context *ev, NTSTATUS reinit_after_fork(struct messaging_context *msg_ctx, struct tevent_context *ev_ctx, - bool parent_longlived, - const char *comment) + bool parent_longlived) { NTSTATUS status = NT_STATUS_OK; int ret; @@ -503,10 +502,6 @@ NTSTATUS reinit_after_fork(struct messaging_context *msg_ctx, } } - if (comment) { - prctl_set_comment("%s", comment); - } - done: return status; } diff --git a/source3/nmbd/asyncdns.c b/source3/nmbd/asyncdns.c index e52380b03f0..2d4a9cd8446 100644 --- a/source3/nmbd/asyncdns.c +++ b/source3/nmbd/asyncdns.c @@ -167,7 +167,7 @@ void start_async_dns(struct messaging_context *msg) CatchSignal(SIGHUP, SIG_IGN); CatchSignal(SIGTERM, sig_term); - status = reinit_after_fork(msg, nmbd_event_context(), true, NULL); + status = reinit_after_fork(msg, nmbd_event_context(), true); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("reinit_after_fork() failed\n")); diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c index 7470897587e..e5794cc13bd 100644 --- a/source3/nmbd/nmbd.c +++ b/source3/nmbd/nmbd.c @@ -983,7 +983,7 @@ static bool open_sockets(bool isdaemon, int port) pidfile_create(lp_pid_directory(), "nmbd"); - status = reinit_after_fork(msg, nmbd_event_context(), false, NULL); + status = reinit_after_fork(msg, nmbd_event_context(), false); if (!NT_STATUS_IS_OK(status)) { exit_daemon("reinit_after_fork() failed", map_errno_from_nt_status(status)); diff --git a/source3/printing/print_cups.c b/source3/printing/print_cups.c index 0bbd7c8eff3..4d83d398675 100644 --- a/source3/printing/print_cups.c +++ b/source3/printing/print_cups.c @@ -495,7 +495,7 @@ static bool cups_pcap_load_async(struct tevent_context *ev, close_all_print_db(); - status = reinit_after_fork(msg_ctx, ev, true, NULL); + status = reinit_after_fork(msg_ctx, ev, true); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("cups_pcap_load_async: reinit_after_fork() failed\n")); smb_panic("cups_pcap_load_async: reinit_after_fork() failed"); diff --git a/source3/rpc_server/rpc_host.c b/source3/rpc_server/rpc_host.c index 7ca24240a92..f58c825e7cc 100644 --- a/source3/rpc_server/rpc_host.c +++ b/source3/rpc_server/rpc_host.c @@ -2949,7 +2949,7 @@ int main(int argc, const char *argv[]) cmdline_daemon_cfg->no_process_group, log_stdout); - status = reinit_after_fork(msg_ctx, ev_ctx, false, NULL); + status = reinit_after_fork(msg_ctx, ev_ctx, false); if (!NT_STATUS_IS_OK(status)) { exit_daemon("reinit_after_fork() failed", map_errno_from_nt_status(status)); diff --git a/source3/smbd/scavenger.c b/source3/smbd/scavenger.c index fe47c22e05f..897ddf1617c 100644 --- a/source3/smbd/scavenger.c +++ b/source3/smbd/scavenger.c @@ -246,7 +246,7 @@ static bool smbd_scavenger_start(struct smbd_scavenger_state *state) close(fds[0]); status = smbd_reinit_after_fork(state->msg, state->ev, - true, "smbd-scavenger"); + true); if (!NT_STATUS_IS_OK(status)) { DEBUG(2, ("reinit_after_fork failed: %s\n", nt_errstr(status))); @@ -254,6 +254,7 @@ static bool smbd_scavenger_start(struct smbd_scavenger_state *state) return false; } + process_set_title("smbd-scavenger", "scavenger"); reopen_logs(); state->am_scavenger = true; diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 9b211238c11..155d2207609 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -35,6 +35,7 @@ #include "secrets.h" #include "../lib/util/memcache.h" #include "ctdbd_conn.h" +#include "lib/util/util_process.h" #include "util_cluster.h" #include "printing/queue_process.h" #include "rpc_server/rpc_config.h" @@ -428,13 +429,15 @@ static bool smbd_notifyd_init(struct messaging_context *msg, bool interactive, return true; } - status = smbd_reinit_after_fork(msg, ev, true, "smbd-notifyd"); + status = smbd_reinit_after_fork(msg, ev, true); if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("%s: reinit_after_fork failed: %s\n", __func__, nt_errstr(status))); exit(1); } + process_set_title("smbd-notifyd", "notifyd"); + reopen_logs(); /* Set up sighup handler for notifyd */ @@ -642,7 +645,7 @@ static bool cleanupd_init(struct messaging_context *msg, bool interactive, close(up_pipe[0]); - status = smbd_reinit_after_fork(msg, ev, true, "cleanupd"); + status = smbd_reinit_after_fork(msg, ev, true); if (!NT_STATUS_IS_OK(status)) { DBG_WARNING("reinit_after_fork failed: %s\n", nt_errstr(status)); @@ -652,6 +655,8 @@ static bool cleanupd_init(struct messaging_context *msg, bool interactive, exit(1); } + process_set_title("smbd-cleanupd", "cleanupd"); + se = tevent_add_signal(ev, ev, SIGHUP, @@ -984,7 +989,7 @@ static void smbd_accept_connection(struct tevent_context *ev, smb_set_close_on_exec(fd); if (s->parent->interactive) { - reinit_after_fork(msg_ctx, ev, true, NULL); + reinit_after_fork(msg_ctx, ev, true); smbd_process(ev, msg_ctx, fd, true); exit_server_cleanly("end of interactive mode"); return; @@ -997,6 +1002,7 @@ static void smbd_accept_connection(struct tevent_context *ev, pid = fork(); if (pid == 0) { + char addrstr[INET6_ADDRSTRLEN]; NTSTATUS status = NT_STATUS_OK; /* @@ -1010,7 +1016,7 @@ static void smbd_accept_connection(struct tevent_context *ev, * them, counting worker smbds. */ CatchChild(); - status = smbd_reinit_after_fork(msg_ctx, ev, true, NULL); + status = smbd_reinit_after_fork(msg_ctx, ev, true); if (!NT_STATUS_IS_OK(status)) { if (NT_STATUS_EQUAL(status, NT_STATUS_TOO_MANY_OPENED_FILES)) { @@ -1034,6 +1040,9 @@ static void smbd_accept_connection(struct tevent_context *ev, smb_panic("reinit_after_fork() failed"); } + print_sockaddr(addrstr, sizeof(addrstr), &addr); + process_set_title("smbd[%s]", "client [%s]", addrstr); + smbd_process(ev, msg_ctx, fd, false); exit: exit_server_cleanly("end of child"); @@ -1627,6 +1636,8 @@ extern void build_options(bool screen); }; bool ok; + setproctitle_init(argc, discard_const(argv), environ); + /* * Do this before any other talloc operation */ @@ -1878,7 +1889,7 @@ extern void build_options(bool screen); if (cmdline_daemon_cfg->daemon) pidfile_create(lp_pid_directory(), "smbd"); - status = reinit_after_fork(msg_ctx, ev_ctx, false, NULL); + status = reinit_after_fork(msg_ctx, ev_ctx, false); if (!NT_STATUS_IS_OK(status)) { exit_daemon("reinit_after_fork() failed", map_errno_from_nt_status(status)); } diff --git a/source3/smbd/server_exit.c b/source3/smbd/server_exit.c index b4a84e1a3f3..5e0c386e090 100644 --- a/source3/smbd/server_exit.c +++ b/source3/smbd/server_exit.c @@ -252,11 +252,11 @@ void smbd_exit_server_cleanly(const char *const explanation) */ NTSTATUS smbd_reinit_after_fork(struct messaging_context *msg_ctx, struct tevent_context *ev_ctx, - bool parent_longlived, const char *comment) + bool parent_longlived) { NTSTATUS ret; am_parent = NULL; - ret = reinit_after_fork(msg_ctx, ev_ctx, parent_longlived, comment); + ret = reinit_after_fork(msg_ctx, ev_ctx, parent_longlived); initialize_password_db(true, ev_ctx); return ret; } diff --git a/source3/smbd/smb1_process.c b/source3/smbd/smb1_process.c index 140884adb96..9edfa2116e9 100644 --- a/source3/smbd/smb1_process.c +++ b/source3/smbd/smb1_process.c @@ -47,6 +47,7 @@ #include "libcli/smb/smbXcli_base.h" #include "lib/util/time_basic.h" #include "source3/lib/substitute.h" +#include "lib/util/util_process.h" /* Internal message queue for deferred opens. */ struct pending_message_list { @@ -2605,13 +2606,13 @@ bool fork_echo_handler(struct smbXsrv_connection *xconn) status = smbd_reinit_after_fork(xconn->client->msg_ctx, xconn->client->raw_ev_ctx, - true, - "smbd-echo"); + true); if (!NT_STATUS_IS_OK(status)) { DEBUG(1, ("reinit_after_fork failed: %s\n", nt_errstr(status))); exit(1); } + process_set_title("smbd-echo", "echo handler"); initialize_password_db(true, xconn->client->raw_ev_ctx); smbd_echo_loop(xconn, listener_pipe[1]); exit(0); diff --git a/source3/torture/test_g_lock.c b/source3/torture/test_g_lock.c index ad3793633f3..fee91270323 100644 --- a/source3/torture/test_g_lock.c +++ b/source3/torture/test_g_lock.c @@ -776,7 +776,7 @@ bool run_g_lock5(int dummy) if (child == 0) { TALLOC_FREE(ctx); - status = reinit_after_fork(msg, ev, false, ""); + status = reinit_after_fork(msg, ev, false); close(ready_pipe[0]); close(exit_pipe[1]); @@ -943,7 +943,7 @@ bool run_g_lock6(int dummy) if (child == 0) { TALLOC_FREE(ctx); - status = reinit_after_fork(msg, ev, false, ""); + status = reinit_after_fork(msg, ev, false); if (!NT_STATUS_IS_OK(status)) { fprintf(stderr, "reinit_after_fork failed: %s\n", nt_errstr(status)); @@ -1106,7 +1106,7 @@ bool run_g_lock7(int dummy) close(down_pipe[1]); down_pipe[1] = -1; - status = reinit_after_fork(msg, ev, false, ""); + status = reinit_after_fork(msg, ev, false); if (!NT_STATUS_IS_OK(status)) { fprintf(stderr, "reinit_after_fork failed: %s\n", diff --git a/source3/winbindd/winbindd.c b/source3/winbindd/winbindd.c index 6796b07bca3..50dc6d6bd92 100644 --- a/source3/winbindd/winbindd.c +++ b/source3/winbindd/winbindd.c @@ -53,6 +53,7 @@ #include "lib/global_contexts.h" #include "source3/lib/substitute.h" #include "winbindd_traceid.h" +#include "lib/util/util_process.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_WINBIND @@ -257,7 +258,7 @@ static void winbind_msg_validate_cache(struct messaging_context *msg_ctx, /* install default SIGCHLD handler: validation code uses fork/waitpid */ CatchSignal(SIGCHLD, SIG_DFL); - setproctitle("validate cache child"); + process_set_title("wb: check cache", "validate cache child"); ret = (uint8_t)winbindd_validate_cache_nobackup(); DEBUG(10, ("winbindd_msg_validata_cache: got return value %d\n", ret)); @@ -1628,7 +1629,7 @@ int main(int argc, const char **argv) status = reinit_after_fork(global_messaging_context(), global_event_context(), - false, NULL); + false); if (!NT_STATUS_IS_OK(status)) { exit_daemon("Winbindd reinit_after_fork() failed", map_errno_from_nt_status(status)); } diff --git a/source3/winbindd/winbindd_dual.c b/source3/winbindd/winbindd_dual.c index fe855045fa8..8cb59b2f752 100644 --- a/source3/winbindd/winbindd_dual.c +++ b/source3/winbindd/winbindd_dual.c @@ -48,6 +48,7 @@ #include "libcli/auth/netlogon_creds_cli.h" #include "../lib/util/pidfile.h" #include "librpc/gen_ndr/ndr_winbind_c.h" +#include "lib/util/util_process.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_WINBIND @@ -1529,7 +1530,7 @@ NTSTATUS winbindd_reinit_after_fork(const struct winbindd_child *myself, status = reinit_after_fork( global_messaging_context(), global_event_context(), - true, NULL); + true); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("reinit_after_fork() failed\n")); return status; @@ -1762,9 +1763,9 @@ static bool fork_domain_child(struct winbindd_child *child) } if (child_domain != NULL) { - setproctitle("domain child [%s]", child_domain->name); + process_set_title("wb[%s]", "domain child [%s]", child_domain->name); } else if (is_idmap_child(child)) { - setproctitle("idmap child"); + process_set_title("wb-idmap", "idmap child"); } /* Handle online/offline messages. */ diff --git a/source4/samba/process_prefork.c b/source4/samba/process_prefork.c index f2927efbb06..35145c7403d 100644 --- a/source4/samba/process_prefork.c +++ b/source4/samba/process_prefork.c @@ -293,12 +293,8 @@ static void prefork_fork_master( } pid = getpid(); - setproctitle("task[%s] pre-fork master", service_name); - /* - * We must fit within 15 chars of text or we will truncate, so - * we put the constant part last - */ - prctl_set_comment("%s[master]", service_name); + + process_set_title("%s[master]", "task[%s] pre-fork master", service_name); /* * this will free all the listening sockets and all state that @@ -753,16 +749,12 @@ static void prefork_fork_worker(struct task_server *task, free(w); TALLOC_FREE(ev); - setproctitle("task[%s] pre-forked worker(%d)", - service_name, - pd->instances); - /* - * We must fit within 15 chars of text or we will truncate, so - * we put child number last - */ - prctl_set_comment("%s(%d)", + -- Samba Shared Repository