]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
config.c: Add cgroup v2 support to cgclear
authorTom Hromatka <tom.hromatka@oracle.com>
Tue, 23 Mar 2021 14:57:28 +0000 (08:57 -0600)
committerTom Hromatka <tom.hromatka@oracle.com>
Mon, 29 Mar 2021 15:40:41 +0000 (15:40 +0000)
When cgclear is invoked against a cgroup v2 controller,
do not attempt to unmount the v2 controller.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
src/config.c

index 3ffa263714055536f850385e39c3fdd11d71478e..11d1da4897d0957664d80d2463db17ec7cd7d3d0 100644 (file)
@@ -1331,6 +1331,7 @@ static int cgroup_config_unload_controller(const struct cgroup_mount_point *moun
        struct cgroup_controller *cgc = NULL;
        char path[FILENAME_MAX];
        void *handle;
+       enum cg_version_t version;
 
        cgroup = cgroup_new_cgroup(".");
        if (cgroup == NULL)
@@ -1346,6 +1347,14 @@ static int cgroup_config_unload_controller(const struct cgroup_mount_point *moun
        if (ret != 0)
                goto out_error;
 
+       ret = cgroup_get_controller_version(mount_info->name, &version);
+       if (ret != 0)
+               goto out_error;
+
+       if (version == CGROUP_V2)
+               /* do not unmount the controller */
+               goto out_error;
+
        /* unmount everything */
        ret = cgroup_get_subsys_mount_point_begin(mount_info->name, &handle,
                        path);