It is never empty at this point, because of the self references. a better test is to see if any of them gets d_inode set. Signed-off-by: Glauber Costa <glommer@xxxxxxxxxxxxx> CC: Tejun Heo <tj@xxxxxxxxxx> --- kernel/cgroup.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index cf7b298..b45a653 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -947,10 +947,16 @@ static int cgroup_rm_file(struct cgroup *cgrp, const struct cftype *cft) static void cgroup_clear_directory(struct dentry *dir) { struct cgroup *cgrp = __d_cgrp(dir); + struct list_head *child; while (!list_empty(&cgrp->files)) cgroup_rm_file(cgrp, NULL); - WARN_ON_ONCE(!list_empty(&dir->d_subdirs)); + + list_for_each(child, &dir->d_subdirs) { + struct dentry *d; + d = list_entry(child, struct dentry, d_u.d_child); + WARN_ON_ONCE(d->d_inode); + } } /* -- 1.7.7.6 -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html