]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
fix template function to copy template groups properly
authorIvana Hutarova Varekova <varekova@redhat.com>
Thu, 18 Jul 2013 10:07:29 +0000 (12:07 +0200)
committerIvana Hutarova Varekova <varekova@redhat.com>
Thu, 18 Jul 2013 10:07:29 +0000 (12:07 +0200)
This patch fixes cgroup_init_templates_cache and cgroup_reload_cached_templates functions. Their have to copy  not only
controllers and their structures but all variables (controller name, permissions and ownership) for templates.

Signed-off-by: Ivana Hutarova Varekova <varekova@redhat.com>
Acked-by: Jan Safranek <jsafrane@redhat.com>
src/config.c

index f3ac4dd85c4a332f3e5f77bcc86ab4679cdad2b4..b2b8a13545b05b8cb325da944b35754e11750a9a 100644 (file)
@@ -1473,7 +1473,24 @@ int cgroup_reload_cached_templates(char *pathname)
        }
 
        for (i = 0; i < template_table_index; i++) {
-               cgroup_copy_cgroup(&config_template_table[i], &template_table[i]);
+               cgroup_copy_cgroup(&template_table[i],
+                       &config_template_table[i]);
+               strcpy((template_table[i]).name,
+                       (config_template_table[i]).name);
+               template_table[i].tasks_uid =
+                       config_template_table[i].tasks_uid;
+               template_table[i].tasks_gid =
+                       config_template_table[i].tasks_gid;
+               template_table[i].task_fperm =
+                       config_template_table[i].task_fperm;
+               template_table[i].control_uid =
+                       config_template_table[i].control_uid;
+               template_table[i].control_gid =
+                       config_template_table[i].control_gid;
+               template_table[i].control_fperm =
+                       config_template_table[i].control_fperm;
+               template_table[i].control_dperm =
+                       config_template_table[i].control_dperm;
        }
 
        return ret;
@@ -1511,7 +1528,24 @@ int cgroup_init_templates_cache(char *pathname)
        }
 
        for (i = 0; i < template_table_index; i++) {
-               cgroup_copy_cgroup(&config_template_table[i], &template_table[i]);
+               cgroup_copy_cgroup(&template_table[i],
+                       &config_template_table[i]);
+               strcpy((template_table[i]).name,
+                       (config_template_table[i]).name);
+               template_table[i].tasks_uid =
+                       config_template_table[i].tasks_uid;
+               template_table[i].tasks_gid =
+                       config_template_table[i].tasks_gid;
+               template_table[i].task_fperm =
+                       config_template_table[i].task_fperm;
+               template_table[i].control_uid =
+                       config_template_table[i].control_uid;
+               template_table[i].control_gid =
+                       config_template_table[i].control_gid;
+               template_table[i].control_fperm =
+                       config_template_table[i].control_fperm;
+               template_table[i].control_dperm =
+                       config_template_table[i].control_dperm;
        }
 
        return ret;