From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756014Ab2DEHO7 (ORCPT ); Thu, 5 Apr 2012 03:14:59 -0400 Received: from mail-iy0-f174.google.com ([209.85.210.174]:61718 "EHLO mail-iy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752167Ab2DEHO4 (ORCPT ); Thu, 5 Apr 2012 03:14:56 -0400 Date: Thu, 5 Apr 2012 00:14:52 -0700 (PDT) From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: Mike Galbraith , Andrew Morton , Ingo Molnar cc: Tejun Heo , Peter Zijlstra , Paul Menage , LKML , Li Zefan Subject: [patch 1/2] cpusets: disallow attaching kthreadd In-Reply-To: Message-ID: References: <1333475906.7439.7.camel@marge.simpson.net> <1333535915.7188.18.camel@marge.simpson.net> <1333542649.7188.40.camel@marge.simpson.net> <20120404230922.GC2173@dhcp-172-17-108-109.mtv.corp.google.com> <1333601231.7783.31.camel@marge.simpson.net> <1333604949.7783.76.camel@marge.simpson.net> <1333608177.7783.106.camel@marge.simpson.net> User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mike Galbraith A worker thread spawned by kthreadd may acquire PF_THREAD_BOUND and never be able to leave a cpuset, rending the cpuset immortal. Save the user some unexpected trouble, just say no. Acked-by: Paul Menage Signed-off-by: Mike Galbraith Signed-off-by: David Rientjes --- kernel/cpuset.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/cpuset.c b/kernel/cpuset.c --- a/kernel/cpuset.c +++ b/kernel/cpuset.c @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -1389,9 +1390,11 @@ static int cpuset_can_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) * unnecessary. Thus, cpusets are not applicable for such * threads. This prevents checking for success of * set_cpus_allowed_ptr() on all attached tasks before - * cpus_allowed may be changed. + * cpus_allowed may be changed. We also disallow attaching + * kthreadd to prevent a child from becoming trapped should it + * later acquire PF_THREAD_BOUND. */ - if (task->flags & PF_THREAD_BOUND) + if (task->flags & PF_THREAD_BOUND || task == kthreadd_task) return -EINVAL; if ((ret = security_task_setscheduler(task))) return ret;