lkml.org 
[lkml]   [2011]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [patch] cpusets: allow PF_THREAD_BOUND kworkers to escape from a cpuset
From
Date

Maybe the below (which seems to have been stillborn) should be done to
cgroups as well. Postmortem: kthreadd is attached to a cgroup with no
rt_runtime allocated, gives birth to severely handicapped kstop threads,
humongous crash dump follows.

Fiddling with kthreadd is user error, but since it makes no sense to
move the thing, why not just say no, and save the user's toes some
needless wear and tear.

> If cpusets doesn't want to let PF_THREAD_BOUND threads out, how about
> cpusets not letting userland scripts attach kthreadd instead?
>
> cpusets: disallow moving kthreadd into a cpuset.
>
> If kthreadd is moved into a cpuset, it's child may then acquire
> PF_THREAD_BOUND and become trapped, making it's cpuset immortal.
>
> Signed-off-by: Mike Galbraith <efault@gmx.de>
>
> diff --git a/kernel/cpuset.c b/kernel/cpuset.c
> index 10131fd..0d9cd04 100644
> --- a/kernel/cpuset.c
> +++ b/kernel/cpuset.c
> @@ -59,6 +59,7 @@
> #include <linux/mutex.h>
> #include <linux/workqueue.h>
> #include <linux/cgroup.h>
> +#include <linux/kthread.h>
>
> /*
> * Workqueue for cpuset related tasks.
> @@ -1382,9 +1383,10 @@ static int cpuset_can_attach(struct cgroup_subsys *ss, struct cgroup *cont,
> * set of allowed nodes is 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.
> + * be changed. We also disallow attaching kthreadd, to prevent it's
> + * child from becoming trapped should it then acquire PF_THREAD_BOUND.
> */
> - if (tsk->flags & PF_THREAD_BOUND)
> + if (tsk->flags & PF_THREAD_BOUND || tsk == kthreadd_task)
> return -EINVAL;
>
> return 0;
>




\
 
 \ /
  Last update: 2011-10-10 07:37    [from the cache]
©2003-2014 Jasper Spaans. Advertise on this site