From patchwork Mon Apr 23 19:37:43 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Glauber Costa X-Patchwork-Id: 154527 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 521E4B6FBB for ; Tue, 24 Apr 2012 05:40:09 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753785Ab2DWTkF (ORCPT ); Mon, 23 Apr 2012 15:40:05 -0400 Received: from mailhub.sw.ru ([195.214.232.25]:41440 "EHLO relay.sw.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753811Ab2DWTkD (ORCPT ); Mon, 23 Apr 2012 15:40:03 -0400 Received: from straightjacket.localdomain (newvpn.parallels.com [195.214.232.74] (may be forged)) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id q3NJdQWl008601; Mon, 23 Apr 2012 23:39:36 +0400 (MSK) From: Glauber Costa To: Tejun Heo Cc: , , Li Zefan , , David Miller , , Glauber Costa Subject: [PATCH v2 1/5] don't attach a task to a dead cgroup Date: Mon, 23 Apr 2012 16:37:43 -0300 Message-Id: <1335209867-1831-2-git-send-email-glommer@parallels.com> X-Mailer: git-send-email 1.7.7.6 In-Reply-To: <1335209867-1831-1-git-send-email-glommer@parallels.com> References: <1335209867-1831-1-git-send-email-glommer@parallels.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Not all external callers of cgroup_attach_task() test to see if the cgroup is still live - the internal callers at cgroup.c does. With this test in cgroup_attach_task, we can assure that no tasks are ever moved to a cgroup that is past its destruction point and was already marked as dead. Signed-off-by: Glauber Costa CC: Tejun Heo CC: Li Zefan CC: Kamezawa Hiroyuki Reviewed-by: KAMEZAWA Hiroyuki --- kernel/cgroup.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-) diff --git a/kernel/cgroup.c b/kernel/cgroup.c index b61b938..932c318 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -1927,6 +1927,9 @@ int cgroup_attach_task(struct cgroup *cgrp, struct task_struct *tsk) struct cgroup_taskset tset = { }; struct css_set *newcg; + if (cgroup_is_removed(cgrp)) + return -ENODEV; + /* @tsk either already exited or can't exit until the end */ if (tsk->flags & PF_EXITING) return -ESRCH;