summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvana Varekova <varekova@redhat.com>2009-06-18 07:50:30 +0200
committerDhaval Giani <dhaval@linux.vnet.ibm.com>2009-06-18 19:49:38 +0530
commitd32491c49637e3c21f46048cc6c505eb41cbe3e0 (patch)
treec64a8b46f2a2fc7560a0a7a24c450bdc04527408
parent5620d31b78fda7d5db0b85fcceca9c2cabe8f155 (diff)
downloadlibcg-d32491c49637e3c21f46048cc6c505eb41cbe3e0.tar.gz
libcg-d32491c49637e3c21f46048cc6c505eb41cbe3e0.tar.xz
libcg-d32491c49637e3c21f46048cc6c505eb41cbe3e0.zip
Prevent to add multiple versions of the same controller to mount_table
This patche add a test to cgroup_init function, which prevent to add multiple records for the same controller (this is a problem eg. in cgroup_get_cgroup function - which looks to mount table and add all relevant controllers using cgroup_add_controller function and when the function calls cgroup_add_cgroup function twice on the same controller, it returns error so the result is cgroup_get_cgroup failed). Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
-rw-r--r--src/api.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/api.c b/src/api.c
index ccea89c..c84675c 100644
--- a/src/api.c
+++ b/src/api.c
@@ -566,6 +566,8 @@ int cgroup_init()
char subsys_name[FILENAME_MAX];
int hierarchy, num_cgroups, enabled;
int i=0;
+ int j;
+ int duplicate = 0;
char *mntopt = NULL;
int err;
char *buf = NULL;
@@ -644,6 +646,22 @@ int cgroup_init()
continue;
cgroup_dbg("matched %s:%s\n", mntopt, controllers[i]);
+
+ /* do not have duplicates in mount table */
+ duplicate = 0;
+ for (j = 0; j < found_mnt; j++) {
+ if (strncmp(mntopt, cg_mount_table[j].name, FILENAME_MAX)
+ == 0) {
+ duplicate = 1;
+ break;
+ }
+ }
+ if (duplicate) {
+ cgroup_dbg("controller %s is already mounted on %s\n",
+ mntopt, cg_mount_table[j].path);
+ continue;
+ }
+
strcpy(cg_mount_table[found_mnt].name, controllers[i]);
strcpy(cg_mount_table[found_mnt].path, ent->mnt_dir);
cgroup_dbg("Found cgroup option %s, count %d\n",