diff --git a/src/shared/tests.c b/src/shared/tests.c index a4ffd3ec02..96b5b805a9 100644 --- a/src/shared/tests.c +++ b/src/shared/tests.c @@ -172,7 +172,7 @@ bool can_memlock(void) { return b; } -int enter_cgroup_subroot(void) { +int enter_cgroup_subroot(char **ret_cgroup) { _cleanup_free_ char *cgroup_root = NULL, *cgroup_subroot = NULL; CGroupMask supported; int r; @@ -192,5 +192,11 @@ int enter_cgroup_subroot(void) { if (r < 0) return r; - return cg_attach_everywhere(supported, cgroup_subroot, 0, NULL, NULL); + r = cg_attach_everywhere(supported, cgroup_subroot, 0, NULL, NULL); + if (r < 0) + return r; + + if (ret_cgroup) + *ret_cgroup = TAKE_PTR(cgroup_subroot); + return 0; } diff --git a/src/shared/tests.h b/src/shared/tests.h index 3e4368460d..5a6fd53f36 100644 --- a/src/shared/tests.h +++ b/src/shared/tests.h @@ -19,7 +19,7 @@ static inline bool manager_errno_skip_test(int r) { } char* setup_fake_runtime_dir(void); -int enter_cgroup_subroot(void); +int enter_cgroup_subroot(char **ret_cgroup); const char* get_testdata_dir(void); const char* get_catalog_dir(void); bool slow_tests_enabled(void); diff --git a/src/test/test-bpf-firewall.c b/src/test/test-bpf-firewall.c index 13f81d48d0..31e0c0b916 100644 --- a/src/test/test-bpf-firewall.c +++ b/src/test/test-bpf-firewall.c @@ -44,7 +44,7 @@ int main(int argc, char *argv[]) { if (!can_memlock()) return log_tests_skipped("Can't use mlock(), skipping."); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-cgroup-mask.c b/src/test/test-cgroup-mask.c index 28a3721255..7fad58f690 100644 --- a/src/test/test-cgroup-mask.c +++ b/src/test/test-cgroup-mask.c @@ -33,7 +33,7 @@ static int test_cgroup_mask(void) { int r; CGroupMask cpu_accounting_mask = get_cpu_accounting_mask(); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-cgroup-unit-default.c b/src/test/test-cgroup-unit-default.c index c4af2a3cdf..1286f11e4e 100644 --- a/src/test/test-cgroup-unit-default.c +++ b/src/test/test-cgroup-unit-default.c @@ -18,7 +18,7 @@ static int test_default_memory_low(void) { uint64_t dml_tree_default; int r; - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-engine.c b/src/test/test-engine.c index a32e98af11..b8351141fe 100644 --- a/src/test/test-engine.c +++ b/src/test/test-engine.c @@ -21,7 +21,7 @@ int main(int argc, char *argv[]) { test_setup_logging(LOG_DEBUG); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-execute.c b/src/test/test-execute.c index d846414750..9d6aeed776 100644 --- a/src/test/test-execute.c +++ b/src/test/test-execute.c @@ -869,7 +869,7 @@ int main(int argc, char *argv[]) { if (getuid() != 0) return log_tests_skipped("not root"); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-load-fragment.c b/src/test/test-load-fragment.c index 8127afdd76..8d0a4ad2e2 100644 --- a/src/test/test-load-fragment.c +++ b/src/test/test-load-fragment.c @@ -779,7 +779,7 @@ int main(int argc, char *argv[]) { test_setup_logging(LOG_INFO); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-path.c b/src/test/test-path.c index 2537dc6972..6ad222b5f9 100644 --- a/src/test/test-path.c +++ b/src/test/test-path.c @@ -31,7 +31,7 @@ static int setup_test(Manager **m) { assert_se(m); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 386cd93cbf..cd45537847 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -20,7 +20,7 @@ int main(int argc, char *argv[]) { test_setup_logging(LOG_INFO); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index d63647bad2..38e37dacb2 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -820,7 +820,7 @@ int main(int argc, char* argv[]) { test_setup_logging(LOG_INFO); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available"); diff --git a/src/test/test-watch-pid.c b/src/test/test-watch-pid.c index a26a0c9d9b..bad289767d 100644 --- a/src/test/test-watch-pid.c +++ b/src/test/test-watch-pid.c @@ -16,7 +16,7 @@ int main(int argc, char *argv[]) { if (getuid() != 0) return log_tests_skipped("not root"); - r = enter_cgroup_subroot(); + r = enter_cgroup_subroot(NULL); if (r == -ENOMEDIUM) return log_tests_skipped("cgroupfs not available");