From 23cfdfda971840a9872031d3c8e09c4445f5a869 Mon Sep 17 00:00:00 2001 From: Donald Buczek Date: Wed, 20 Apr 2022 21:59:37 +0200 Subject: [PATCH] mxqd: Simplify exec_reaper() --- mxqd.c | 84 +++++++++++++++++----------------------------------------- 1 file changed, 25 insertions(+), 59 deletions(-) diff --git a/mxqd.c b/mxqd.c index 915e5e09..11a48fee 100644 --- a/mxqd.c +++ b/mxqd.c @@ -920,38 +920,25 @@ static int is_reaper(pid_t pid) { } static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, struct mxq_job *job) { - int res; - - struct mxq_group *group; + struct mxq_group *group = &glist->group; - group = &glist->group; - - res = prctl(PR_SET_NAME, REAPER_PNAME, NULL, NULL, NULL); - if (res < 0) { + if (prctl(PR_SET_NAME, REAPER_PNAME, NULL, NULL, NULL) ==-1) { mx_log_err("reaper_process set name: %m"); return; } - - res = setsid(); - if (res < 0) { + if (setsid() == -1) { mx_log_err("reaper_process setsid: %m"); return; } - - res = prctl(PR_SET_CHILD_SUBREAPER, 1); - if (res < 0) { + if (prctl(PR_SET_CHILD_SUBREAPER, 1) == -1) { mx_log_err("set subreaper: %m"); return; } - struct passwd *passwd; - int fh; - struct rlimit rlim; - sigprocmask(SIG_UNBLOCK,&all_signals,NULL); signal(SIGPIPE,SIG_DFL); - passwd = getpwuid(group->user_uid); + struct passwd *passwd = getpwuid(group->user_uid); if (!passwd) { mx_log_err("job=%s(%d):%lu:%lu getpwuid(): %m", group->user_name, group->user_uid, group->group_id, job->job_id); @@ -988,10 +975,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, } } - /* prepare environment */ - - res = clearenv(); - if (res != 0) { + if (clearenv() != 0) { mx_log_err("job=%s(%d):%lu:%lu clearenv(): %m", group->user_name, group->user_uid, group->group_id, job->job_id); return; @@ -1017,8 +1001,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, if (group->job_tmpdir_size == 0) { mx_setenv_forever("TMPDIR", server->initial_tmpdir); } else { - char *mxq_job_tmpdir; - mxq_job_tmpdir = mx_asprintf_forever("%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job->job_id); + char *mxq_job_tmpdir = mx_asprintf_forever("%s/%lu", MXQ_JOB_TMPDIR_MNTDIR, job->job_id); mx_setenv_forever("MXQ_JOB_TMPDIR", mxq_job_tmpdir); mx_setenv_forever("TMPDIR", mxq_job_tmpdir); free(mxq_job_tmpdir); @@ -1042,7 +1025,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, free(argv[3]); } - fh = open("/proc/self/loginuid", O_WRONLY|O_TRUNC); + int fh = open("/proc/self/loginuid", O_WRONLY|O_TRUNC); if (fh == -1) { mx_log_err("job=%s(%d):%lu:%lu open(%s) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id, "/proc/self/loginuid"); @@ -1051,21 +1034,16 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, dprintf(fh, "%d", group->user_uid); close(fh); - /* set memory limits */ + struct rlimit rlim; rlim.rlim_cur = group->job_memory*1024*1024; rlim.rlim_max = group->job_memory*1024*1024; - - res = setrlimit(RLIMIT_DATA, &rlim); - if (res == -1) + if (setrlimit(RLIMIT_DATA, &rlim) == -1) mx_log_err("job=%s(%d):%lu:%lu setrlimit(RLIMIT_DATA, ...) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id); - /* disable core files */ rlim.rlim_cur = 0; rlim.rlim_cur = 0; - - res = setrlimit(RLIMIT_CORE, &rlim); - if (res == -1) + if (setrlimit(RLIMIT_CORE, &rlim) == -1) mx_log_err("job=%s(%d):%lu:%lu setrlimit(RLIMIT_CORE, ...) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id); @@ -1075,37 +1053,30 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, rlim.rlim_cur = group->job_time*60; rlim.rlim_cur = group->job_time*63; - res = setrlimit(RLIMIT_CPU, &rlim); - if (res == -1) + if (setrlimit(RLIMIT_CPU, &rlim) == -1) mx_log_err("job=%s(%d):%lu:%lu setrlimit(RLIMIT_CPU, ...) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id); } - res = initgroups(passwd->pw_name, group->user_gid); - if (res == -1) { + if (initgroups(passwd->pw_name, group->user_gid) == -1) { mx_log_err("job=%s(%d):%lu:%lu initgroups() failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id); return; } - - res = setregid(group->user_gid, group->user_gid); - if (res == -1) { + if (setregid(group->user_gid, group->user_gid) == -1) { mx_log_err("job=%s(%d):%lu:%lu setregid(%d, %d) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id, group->user_gid, group->user_gid); return; } - - res = setreuid(-1, group->user_uid); - if (res == -1) { + if (setreuid(-1, group->user_uid) == -1) { mx_log_err("job=%s(%d):%lu:%lu setreuid(%d, %d) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id, group->user_uid, group->user_uid); return; } - res = chdir(job->job_workdir); - if (res == -1) { + if (chdir(job->job_workdir) == -1) { mx_log_err("job=%s(%d):%lu:%lu chdir(%s) failed: %m", group->user_name, group->user_uid, group->group_id, job->job_id, job->job_workdir); @@ -1114,30 +1085,26 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, umask(job->job_umask); - res=sched_setaffinity(0,sizeof(job->host_cpu_set),&job->host_cpu_set); - if (res<0) mx_log_warning("sched_setaffinity: $m"); + if (sched_setaffinity(0,sizeof(job->host_cpu_set),&job->host_cpu_set) == -1) + mx_log_warning("sched_setaffinity: $m"); mxq_job_set_tmpfilenames(group, job); - res = mxq_redirect_input("/dev/null"); - if (res < 0) { - mx_log_err(" job=%s(%d):%lu:%lu mxq_redirect_input() failed (%d): %m", + if (mxq_redirect_input("/dev/null") < 0) { + mx_log_err(" job=%s(%d):%lu:%lu mxq_redirect_input() failed: %m", group->user_name, group->user_uid, group->group_id, - job->job_id, - res); + job->job_id); return; } - res = mxq_redirect_output(job->tmp_stdout, job->tmp_stderr); - if (res < 0) { - mx_log_err(" job=%s(%d):%lu:%lu mxq_redirect_output() failed (%d): %m", + if (mxq_redirect_output(job->tmp_stdout, job->tmp_stderr) < 0) { + mx_log_err(" job=%s(%d):%lu:%lu mxq_redirect_output() failed: %m", group->user_name, group->user_uid, group->group_id, - job->job_id, - res); + job->job_id); return; } @@ -1165,8 +1132,7 @@ static void exec_reaper(struct mxq_server *server,struct mxq_group_list *glist, new_argv[i+4] = argv[i]; new_argv[argc+4] = NULL; - res = setuid(0); - if (res == -1) { + if (setuid(0) == -1) { mx_log_err("job=%s(%d):%lu:%lu setuid(0) failed: %m", group->user_name, group->user_uid,