diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-09-11 20:34:53 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-09-12 10:28:24 +0900 |
commit | 28fb998615a68457642d1105c1b520e05416391c (patch) | |
tree | 8b69718a9f1f70dd289ee054c5d9721dd45e3cb3 /src/oom | |
parent | 594c383554798c34616eb5d8dc1bc00cafaaf06b (diff) | |
download | systemd-28fb998615a68457642d1105c1b520e05416391c.tar.gz |
oomd: refuse to start if cgroup memory controller is not available
Diffstat (limited to 'src/oom')
-rw-r--r-- | src/oom/oomd.c | 8 |
1 files changed, 8 insertions, 0 deletions
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) |