aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/cgroup.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index 358e77564e6f..1a06be61dcd0 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2472,10 +2472,7 @@ static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry)
2472 mutex_unlock(&cgroup_mutex); 2472 mutex_unlock(&cgroup_mutex);
2473 return -EBUSY; 2473 return -EBUSY;
2474 } 2474 }
2475 2475 mutex_unlock(&cgroup_mutex);
2476 parent = cgrp->parent;
2477 root = cgrp->root;
2478 sb = root->sb;
2479 2476
2480 /* 2477 /*
2481 * Call pre_destroy handlers of subsys. Notify subsystems 2478 * Call pre_destroy handlers of subsys. Notify subsystems
@@ -2483,7 +2480,14 @@ static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry)
2483 */ 2480 */
2484 cgroup_call_pre_destroy(cgrp); 2481 cgroup_call_pre_destroy(cgrp);
2485 2482
2486 if (cgroup_has_css_refs(cgrp)) { 2483 mutex_lock(&cgroup_mutex);
2484 parent = cgrp->parent;
2485 root = cgrp->root;
2486 sb = root->sb;
2487
2488 if (atomic_read(&cgrp->count)
2489 || !list_empty(&cgrp->children)
2490 || cgroup_has_css_refs(cgrp)) {
2487 mutex_unlock(&cgroup_mutex); 2491 mutex_unlock(&cgroup_mutex);
2488 return -EBUSY; 2492 return -EBUSY;
2489 } 2493 }