From mboxrd@z Thu Jan 1 00:00:00 1970 From: KAMEZAWA Hiroyuki Subject: [RFC][PATCH 8/9 v2] cgroup: avoid creating new cgroup under a cgroup being destroyed Date: Fri, 27 Apr 2012 15:04:14 +0900 Message-ID: <4F9A36DE.30301@jp.fujitsu.com> References: <4F9A327A.6050409@jp.fujitsu.com> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4F9A327A.6050409-+CUm20s59erQFUHtdCDX3A@public.gmane.org> Sender: cgroups-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Linux Kernel Cc: "linux-mm-Bw31MaZKKs3YtjvyW6yDsg@public.gmane.org" , "cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org" , Michal Hocko , Johannes Weiner , Frederic Weisbecker , Glauber Costa , Tejun Heo , Han Ying , "Aneesh Kumar K.V" , Andrew Morton , kamezawa.hiroyuki-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org When ->pre_destroy() is called, it should be guaranteed that new child cgroup is not created under a cgroup, where pre_destroy() is running. If not, ->pre_destroy() must check children and return -EBUSY, which causes warning. Signed-off-by: KAMEZAWA Hiroyuki --- kernel/cgroup.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 7a3076b..003ceed 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -3970,6 +3970,15 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry, mutex_lock(&cgroup_mutex); + /* + * prevent making child cgroup when ->pre_destroy() is running. + */ + if (test_bit(CGRP_WAIT_ON_RMDIR, &parent->flags)) { + mutex_unlock(&cgroup_mutex); + atomic_dec(&sb->s_active); + return -EBUSY; + } + init_cgroup_housekeeping(cgrp); cgrp->parent = parent; -- 1.7.4.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from psmtp.com (na3sys010amx166.postini.com [74.125.245.166]) by kanga.kvack.org (Postfix) with SMTP id EC8576B007E for ; Fri, 27 Apr 2012 02:06:17 -0400 (EDT) Received: from m3.gw.fujitsu.co.jp (unknown [10.0.50.73]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id 8264C3EE0C0 for ; Fri, 27 Apr 2012 15:06:16 +0900 (JST) Received: from smail (m3 [127.0.0.1]) by outgoing.m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 5C68745DEC2 for ; Fri, 27 Apr 2012 15:06:16 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (s3.gw.fujitsu.co.jp [10.0.50.93]) by m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 42F1B45DEA6 for ; Fri, 27 Apr 2012 15:06:16 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id 2B834E08002 for ; Fri, 27 Apr 2012 15:06:16 +0900 (JST) Received: from m1000.s.css.fujitsu.com (m1000.s.css.fujitsu.com [10.240.81.136]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id D2357E08006 for ; Fri, 27 Apr 2012 15:06:15 +0900 (JST) Message-ID: <4F9A36DE.30301@jp.fujitsu.com> Date: Fri, 27 Apr 2012 15:04:14 +0900 From: KAMEZAWA Hiroyuki MIME-Version: 1.0 Subject: [RFC][PATCH 8/9 v2] cgroup: avoid creating new cgroup under a cgroup being destroyed References: <4F9A327A.6050409@jp.fujitsu.com> In-Reply-To: <4F9A327A.6050409@jp.fujitsu.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Linux Kernel Cc: "linux-mm@kvack.org" , "cgroups@vger.kernel.org" , Michal Hocko , Johannes Weiner , Frederic Weisbecker , Glauber Costa , Tejun Heo , Han Ying , "Aneesh Kumar K.V" , Andrew Morton , kamezawa.hiroyuki@gmail.com When ->pre_destroy() is called, it should be guaranteed that new child cgroup is not created under a cgroup, where pre_destroy() is running. If not, ->pre_destroy() must check children and return -EBUSY, which causes warning. Signed-off-by: KAMEZAWA Hiroyuki --- kernel/cgroup.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 7a3076b..003ceed 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -3970,6 +3970,15 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry, mutex_lock(&cgroup_mutex); + /* + * prevent making child cgroup when ->pre_destroy() is running. + */ + if (test_bit(CGRP_WAIT_ON_RMDIR, &parent->flags)) { + mutex_unlock(&cgroup_mutex); + atomic_dec(&sb->s_active); + return -EBUSY; + } + init_cgroup_housekeeping(cgrp); cgrp->parent = parent; -- 1.7.4.1 -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753914Ab2D0GGT (ORCPT ); Fri, 27 Apr 2012 02:06:19 -0400 Received: from fgwmail6.fujitsu.co.jp ([192.51.44.36]:35633 "EHLO fgwmail6.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751788Ab2D0GGR (ORCPT ); Fri, 27 Apr 2012 02:06:17 -0400 X-SecurityPolicyCheck: OK by SHieldMailChecker v1.7.4 Message-ID: <4F9A36DE.30301@jp.fujitsu.com> Date: Fri, 27 Apr 2012 15:04:14 +0900 From: KAMEZAWA Hiroyuki User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:12.0) Gecko/20120420 Thunderbird/12.0 MIME-Version: 1.0 To: Linux Kernel CC: "linux-mm@kvack.org" , "cgroups@vger.kernel.org" , Michal Hocko , Johannes Weiner , Frederic Weisbecker , Glauber Costa , Tejun Heo , Han Ying , "Aneesh Kumar K.V" , Andrew Morton , kamezawa.hiroyuki@gmail.com Subject: [RFC][PATCH 8/9 v2] cgroup: avoid creating new cgroup under a cgroup being destroyed References: <4F9A327A.6050409@jp.fujitsu.com> In-Reply-To: <4F9A327A.6050409@jp.fujitsu.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When ->pre_destroy() is called, it should be guaranteed that new child cgroup is not created under a cgroup, where pre_destroy() is running. If not, ->pre_destroy() must check children and return -EBUSY, which causes warning. Signed-off-by: KAMEZAWA Hiroyuki --- kernel/cgroup.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 7a3076b..003ceed 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -3970,6 +3970,15 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry, mutex_lock(&cgroup_mutex); + /* + * prevent making child cgroup when ->pre_destroy() is running. + */ + if (test_bit(CGRP_WAIT_ON_RMDIR, &parent->flags)) { + mutex_unlock(&cgroup_mutex); + atomic_dec(&sb->s_active); + return -EBUSY; + } + init_cgroup_housekeeping(cgrp); cgrp->parent = parent; -- 1.7.4.1