Merge tag 'mfd-for-linus-3.20' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
[pandora-kernel.git] / kernel / cgroup.c
index 04cfe8a..29a7b2c 100644 (file)
@@ -3077,7 +3077,7 @@ static int cgroup_add_file(struct cgroup *cgrp, struct cftype *cft)
 #endif
        kn = __kernfs_create_file(cgrp->kn, cgroup_file_name(cgrp, cft, name),
                                  cgroup_file_mode(cft), 0, cft->kf_ops, cft,
-                                 NULL, false, key);
+                                 NULL, key);
        if (IS_ERR(kn))
                return PTR_ERR(kn);
 
@@ -4373,16 +4373,20 @@ static void css_free_work_fn(struct work_struct *work)
 {
        struct cgroup_subsys_state *css =
                container_of(work, struct cgroup_subsys_state, destroy_work);
+       struct cgroup_subsys *ss = css->ss;
        struct cgroup *cgrp = css->cgroup;
 
        percpu_ref_exit(&css->refcnt);
 
-       if (css->ss) {
+       if (ss) {
                /* css free path */
+               int id = css->id;
+
                if (css->parent)
                        css_put(css->parent);
 
-               css->ss->css_free(css);
+               ss->css_free(css);
+               cgroup_idr_remove(&ss->css_idr, id);
                cgroup_put(cgrp);
        } else {
                /* cgroup free path */
@@ -4434,7 +4438,7 @@ static void css_release_work_fn(struct work_struct *work)
 
        if (ss) {
                /* css release path */
-               cgroup_idr_remove(&ss->css_idr, css->id);
+               cgroup_idr_replace(&ss->css_idr, NULL, css->id);
                if (ss->css_released)
                        ss->css_released(css);
        } else {