sched: fix mysql+oltp regression
[safe/jmp/linux-2.6] / kernel / cgroup.c
index 28debe4..13932ab 100644 (file)
@@ -355,6 +355,17 @@ static struct css_set *find_existing_css_set(
        return NULL;
 }
 
+static void free_cg_links(struct list_head *tmp)
+{
+       struct cg_cgroup_link *link;
+       struct cg_cgroup_link *saved_link;
+
+       list_for_each_entry_safe(link, saved_link, tmp, cgrp_link_list) {
+               list_del(&link->cgrp_link_list);
+               kfree(link);
+       }
+}
+
 /*
  * allocate_cg_links() allocates "count" cg_cgroup_link structures
  * and chains them on tmp through their cgrp_link_list fields. Returns 0 on
@@ -363,17 +374,12 @@ static struct css_set *find_existing_css_set(
 static int allocate_cg_links(int count, struct list_head *tmp)
 {
        struct cg_cgroup_link *link;
-       struct cg_cgroup_link *saved_link;
        int i;
        INIT_LIST_HEAD(tmp);
        for (i = 0; i < count; i++) {
                link = kmalloc(sizeof(*link), GFP_KERNEL);
                if (!link) {
-                       list_for_each_entry_safe(link, saved_link, tmp,
-                                                cgrp_link_list) {
-                               list_del(&link->cgrp_link_list);
-                               kfree(link);
-                       }
+                       free_cg_links(tmp);
                        return -ENOMEM;
                }
                list_add(&link->cgrp_link_list, tmp);
@@ -381,17 +387,6 @@ static int allocate_cg_links(int count, struct list_head *tmp)
        return 0;
 }
 
-static void free_cg_links(struct list_head *tmp)
-{
-       struct cg_cgroup_link *link;
-       struct cg_cgroup_link *saved_link;
-
-       list_for_each_entry_safe(link, saved_link, tmp, cgrp_link_list) {
-               list_del(&link->cgrp_link_list);
-               kfree(link);
-       }
-}
-
 /*
  * find_css_set() takes an existing cgroup group and a
  * cgroup object, and returns a css_set object that's
@@ -956,7 +951,6 @@ static int cgroup_get_sb(struct file_system_type *fs_type,
        struct super_block *sb;
        struct cgroupfs_root *root;
        struct list_head tmp_cg_links;
-       INIT_LIST_HEAD(&tmp_cg_links);
 
        /* First find the desired set of subsystems */
        ret = parse_cgroupfs_options(data, &opts);
@@ -2374,7 +2368,7 @@ static int cgroup_mkdir(struct inode *dir, struct dentry *dentry, int mode)
        return cgroup_create(c_parent, dentry, mode | S_IFDIR);
 }
 
-static inline int cgroup_has_css_refs(struct cgroup *cgrp)
+static int cgroup_has_css_refs(struct cgroup *cgrp)
 {
        /* Check the reference count on each subsystem. Since we
         * already established that there are no tasks in the