All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <mtosatti@redhat.com>
To: linux-kernel@vger.kernel.org, Tejun Heo <tj@kernel.org>,
	Luiz Capitulino <lcapitulino@redhat.com>
Cc: Chao Peng <chao.p.peng@linux.intel.com>,
	Vikas Shivappa <vikas.shivappa@intel.com>
Subject: [PATCH] cgroups: move cpuset specific checks from generic code to cpuset_can_attach
Date: Wed, 25 Nov 2015 20:01:17 -0200	[thread overview]
Message-ID: <20151125220117.GA990@amt.cnet> (raw)


Move PF_NO_SETAFFINITY check to cpuset cgroups, where it belongs.
This makes it possible to attach PF_NO_SETAFFINITY to Intel CAT cgroups.

Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index f89d929..0603652 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -2466,16 +2466,6 @@ static ssize_t __cgroup_procs_write(struct kernfs_open_file *of, char *buf,
 	if (threadgroup)
 		tsk = tsk->group_leader;
 
-	/*
-	 * Workqueue threads may acquire PF_NO_SETAFFINITY and become
-	 * trapped in a cpuset, or RT worker may be born in a cgroup
-	 * with no rt_runtime allocated.  Just say no.
-	 */
-	if (tsk == kthreadd_task || (tsk->flags & PF_NO_SETAFFINITY)) {
-		ret = -EINVAL;
-		goto out_unlock_rcu;
-	}
-
 	get_task_struct(tsk);
 	rcu_read_unlock();
 
diff --git a/kernel/cpuset.c b/kernel/cpuset.c
index f0acff0..9fff4d6 100644
--- a/kernel/cpuset.c
+++ b/kernel/cpuset.c
@@ -53,6 +53,7 @@
 #include <linux/time.h>
 #include <linux/backing-dev.h>
 #include <linux/sort.h>
+#include <linux/kthread.h>
 
 #include <asm/uaccess.h>
 #include <linux/atomic.h>
@@ -1445,6 +1446,17 @@ static int cpuset_can_attach(struct cgroup_subsys_state *css,
 		goto out_unlock;
 
 	cgroup_taskset_for_each(task, tset) {
+		/*
+		 * Workqueue threads may acquire PF_NO_SETAFFINITY and become
+		 * trapped in a cpuset, or RT worker may be born in a cgroup
+		 * with no rt_runtime allocated.  Just say no.
+		 */
+		if (task == kthreadd_task ||
+		    (task->flags & PF_NO_SETAFFINITY)) {
+			ret = -EINVAL;
+			goto out_unlock;
+		}
+
 		ret = task_can_attach(task, cs->cpus_allowed);
 		if (ret)
 			goto out_unlock;


             reply	other threads:[~2015-11-25 22:01 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-25 22:01 Marcelo Tosatti [this message]
2015-11-26  8:00 ` [PATCH] cgroups: move cpuset specific checks from generic code to cpuset_can_attach Chao Peng
2015-11-26 12:09 ` Mike Galbraith
2015-11-26 22:32   ` [PATCH] cgroups: move cpuset specific checks from generic code to cpuset_can_attach (v2) Marcelo Tosatti
2015-11-26 23:42     ` Mike Galbraith
2015-12-01 16:49     ` Tejun Heo
2015-12-02  6:21       ` Mike Galbraith

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151125220117.GA990@amt.cnet \
    --to=mtosatti@redhat.com \
    --cc=chao.p.peng@linux.intel.com \
    --cc=lcapitulino@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tj@kernel.org \
    --cc=vikas.shivappa@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.