* XX: Need to figure out how to cleanup? Cleanup just the stuff
* we added, or the whole structure.
*/
+ cgroup_free_controllers(cgroup);
cgroup = NULL;
return error;
}
" failed\n",
cg_mount_table[i].name);
pthread_rwlock_unlock(&cg_mount_table_lock);
+ cgroup_free_controllers(cgroup);
return ECGROUPNOTALLOWED;
}
}
if (!cptr) {
cgroup_dbg("Adding controller '%s' failed\n",
controller);
+ cgroup_free_controllers(cgroup);
return ECGROUPNOTALLOWED;
}
}
return ret;
/* Add task to cgroup */
ret = cgroup_attach_task_pid(&cgroup, pid);
- if (ret) {
+ if (ret)
cgroup_dbg("cgroup_attach_task_pid failed:%d\n", ret);
- return ret;
- }
- return 0;
+ cgroup_free_controllers(&cgroup);
+ return ret;
}
/**
for (i = 0; i < cgroup->index; i++) {
for (j = 0; j < cgroup->controller[i]->index; j++)
free(cgroup->controller[i]->values[j]);
+ cgroup->controller[i]->index = 0;
free(cgroup->controller[i]);
}
+ cgroup->index = 0;
}
void cgroup_free(struct cgroup **cgroup)