]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
cgroup_{reload|init}_cached_templates:memory leaks
authorIvana Hutarova Varekova <varekova@redhat.com>
Wed, 30 Oct 2013 13:17:15 +0000 (14:17 +0100)
committerIvana Hutarova Varekova <varekova@redhat.com>
Wed, 30 Oct 2013 13:17:15 +0000 (14:17 +0100)
cgroup_{reload|init}_cached_templates does not free memory if no template
is set. This patch fix the problem.

Signed-off-by: Ivana Hutarova Varekova <varekova@redhat.com>
Acked-by: Peter Schiffer <pschiffe@redhat.com>
src/config.c

index ac844a7ae30c3c860457eae098bf298eec4e70cd..da2c0dd024ab078a43417b4dd1a440516818d1c1 100644 (file)
@@ -1460,7 +1460,7 @@ int cgroup_reload_cached_templates(char *pathname)
        }
        template_table_index = 0;
 
-       if (config_template_table_index != 0) {
+       if ((config_template_table_index != 0) || (config_table_index != 0)) {
                /* config template structures have to be free as well*/
                cgroup_free_config();
        }
@@ -1515,7 +1515,16 @@ int cgroup_init_templates_cache(char *pathname)
        int ret = 0;
        int i;
 
-       if (config_template_table_index != 0) {
+       if (template_table) {
+               /* template structures have to be free */
+               for (i = 0; i < template_table_index; i++)
+                       cgroup_free_controllers(&template_table[i]);
+               free(template_table);
+               template_table = NULL;
+       }
+       template_table_index = 0;
+
+       if ((config_template_table_index != 0) || (config_table_index != 0)) {
                /* config structures have to be clean */
                cgroup_free_config();
        }