From 48764beb4dda0f526975c34798cc3be75d882ae5 Mon Sep 17 00:00:00 2001 From: KAMEZAWA Hiroyuki Date: Wed, 19 Nov 2008 15:36:34 -0800 Subject: [PATCH] --- yaml --- r: 119190 b: refs/heads/master c: 3fa59dfbc3b223f02c26593be69ce6fc9a940405 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/cgroup.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 3a5d009cb2e0..8c915909c7f1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0ae15132a4f5c758a6ffcde74495641dc3f62ba1 +refs/heads/master: 3fa59dfbc3b223f02c26593be69ce6fc9a940405 diff --git a/trunk/kernel/cgroup.c b/trunk/kernel/cgroup.c index 358e77564e6f..1a06be61dcd0 100644 --- a/trunk/kernel/cgroup.c +++ b/trunk/kernel/cgroup.c @@ -2472,10 +2472,7 @@ static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry) mutex_unlock(&cgroup_mutex); return -EBUSY; } - - parent = cgrp->parent; - root = cgrp->root; - sb = root->sb; + mutex_unlock(&cgroup_mutex); /* * Call pre_destroy handlers of subsys. Notify subsystems @@ -2483,7 +2480,14 @@ static int cgroup_rmdir(struct inode *unused_dir, struct dentry *dentry) */ cgroup_call_pre_destroy(cgrp); - if (cgroup_has_css_refs(cgrp)) { + mutex_lock(&cgroup_mutex); + parent = cgrp->parent; + root = cgrp->root; + sb = root->sb; + + if (atomic_read(&cgrp->count) + || !list_empty(&cgrp->children) + || cgroup_has_css_refs(cgrp)) { mutex_unlock(&cgroup_mutex); return -EBUSY; }