From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kamezawa Hiroyuki Subject: Re: [RFC][PATCH 5/7] cgroup: make sure parent won't be destroyed before its children Date: Fri, 05 Apr 2013 14:58:37 +0900 Message-ID: <515E680D.5040805@jp.fujitsu.com> References: <515BF233.6070308@huawei.com> <515BF2A4.1070703@huawei.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <515BF2A4.1070703@huawei.com> Sender: owner-linux-mm@kvack.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Li Zefan Cc: linux-mm@kvack.org, LKML , Cgroups , Tejun Heo , Glauber Costa , Michal Hocko , Johannes Weiner (2013/04/03 18:13), Li Zefan wrote: > Suppose we rmdir a cgroup and there're still css refs, this cgroup won't > be freed. Then we rmdir the parent cgroup, and the parent is freed due > to css ref draining to 0. Now it would be a disaster if the child cgroup > tries to access its parent. > > Make sure this won't happen. > > Signed-off-by: Li Zefan > --- > kernel/cgroup.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/kernel/cgroup.c b/kernel/cgroup.c > index fa54b92..78204bc 100644 > --- a/kernel/cgroup.c > +++ b/kernel/cgroup.c > @@ -888,6 +888,13 @@ static void cgroup_free_fn(struct work_struct *work) > mutex_unlock(&cgroup_mutex); > > /* > + * We get a ref to the parent's dentry, and put the ref when > + * this cgroup is being freed, so it's guaranteed that the > + * parent won't be destroyed before its children. > + */ > + dput(cgrp->parent->dentry); > + > + /* > * Drop the active superblock reference that we took when we > * created the cgroup > */ > @@ -4171,6 +4178,9 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry, > for_each_subsys(root, ss) > dget(dentry); > > + /* hold a ref to the parent's dentry */ > + dget(parent->dentry); > + > /* creation succeeded, notify subsystems */ > for_each_subsys(root, ss) { > err = online_css(ss, cgrp); > Acked-by: KAMEZAWA Hiroyuki -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org