From: Yu Watanabe Date: Sat, 11 Sep 2021 11:34:53 +0000 (+0900) Subject: oomd: refuse to start if cgroup memory controller is not available X-Git-Tag: v250-rc1~694^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=28fb998615a68457642d1105c1b520e05416391c;p=thirdparty%2Fsystemd.git oomd: refuse to start if cgroup memory controller is not available --- diff --git a/src/oom/oomd.c b/src/oom/oomd.c index 8d4014ee063..5b50833df79 100644 --- a/src/oom/oomd.c +++ b/src/oom/oomd.c @@ -120,6 +120,7 @@ static int run(int argc, char *argv[]) { _cleanup_(manager_freep) Manager *m = NULL; _cleanup_free_ char *swap = NULL; unsigned long long s = 0; + CGroupMask mask; int r; log_setup(); @@ -153,6 +154,13 @@ static int run(int argc, char *argv[]) { if (r == 0) return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "Requires the unified cgroups hierarchy"); + r = cg_mask_supported(&mask); + if (r < 0) + return log_error_errno(r, "Failed to get supported cgroup controllers: %m"); + + if (!FLAGS_SET(mask, CGROUP_MASK_MEMORY)) + return log_error_errno(SYNTHETIC_ERRNO(EOPNOTSUPP), "Requires the cgroup memory controller."); + assert_se(sigprocmask_many(SIG_BLOCK, NULL, SIGTERM, SIGINT, -1) >= 0); if (arg_mem_pressure_usec > 0 && arg_mem_pressure_usec < 1 * USEC_PER_SEC)