summaryrefslogtreecommitdiff
path: root/src/oom
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-09-11 20:34:53 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-09-12 10:28:24 +0900
commit28fb998615a68457642d1105c1b520e05416391c (patch)
tree8b69718a9f1f70dd289ee054c5d9721dd45e3cb3 /src/oom
parent594c383554798c34616eb5d8dc1bc00cafaaf06b (diff)
downloadsystemd-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.c8
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)