From 28fb998615a68457642d1105c1b520e05416391c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Sat, 11 Sep 2021 20:34:53 +0900 Subject: [PATCH] oomd: refuse to start if cgroup memory controller is not available --- src/oom/oomd.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/oom/oomd.c b/src/oom/oomd.c index 8d4014ee06..5b50833df7 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)