diff --git a/criu/cr-check.c b/criu/cr-check.c index 2bb0d9a2e..a67ee2d6f 100644 --- a/criu/cr-check.c +++ b/criu/cr-check.c @@ -820,6 +820,23 @@ static int check_clone_parent_vs_pid() return 0; } +static int check_cgroupns(void) +{ + int ret; + if (opts.check_ms_kernel) { + pr_warn("Skipping cgroup namespaces check\n"); + return 0; + } + + ret = access("/proc/self/ns/cgroup", F_OK); + if (ret < 0) { + pr_err("cgroupns not supported. This is not fatal."); + return -1; + } + + return 0; +} + static int (*chk_feature)(void); int cr_check(void) @@ -876,6 +893,7 @@ int cr_check(void) ret |= check_aio_remap(); ret |= check_fdinfo_lock(); ret |= check_clone_parent_vs_pid(); + ret |= check_cgroupns(); out: if (!ret) @@ -949,6 +967,8 @@ int check_add_feature(char *feat) chk_feature = check_ptrace_dump_seccomp_filters; else if (!strcmp(feat, "loginuid")) chk_feature = check_loginuid; + else if (!strcmp(feat, "cgroupns")) + chk_feature = check_cgroupns; else { pr_err("Unknown feature %s\n", feat); return -1;