diff --git a/[refs] b/[refs] index afb8926c8717..1bcdff54b3c8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1747b21fecbfb63fbf6b9624e8b92707960d5a97 +refs/heads/master: 800d4d30c8f20bd728e5741a3b77c4859a613f7c diff --git a/trunk/kernel/sched_autogroup.c b/trunk/kernel/sched_autogroup.c index 9fb656283157..137a096ae9d8 100644 --- a/trunk/kernel/sched_autogroup.c +++ b/trunk/kernel/sched_autogroup.c @@ -161,11 +161,15 @@ autogroup_move_group(struct task_struct *p, struct autogroup *ag) p->signal->autogroup = autogroup_kref_get(ag); + if (!ACCESS_ONCE(sysctl_sched_autogroup_enabled)) + goto out; + t = p; do { sched_move_task(t); } while_each_thread(p, t); +out: unlock_task_sighand(p, &flags); autogroup_kref_put(prev); } diff --git a/trunk/kernel/sched_autogroup.h b/trunk/kernel/sched_autogroup.h index 7b859ffe5dad..05577055cfca 100644 --- a/trunk/kernel/sched_autogroup.h +++ b/trunk/kernel/sched_autogroup.h @@ -1,6 +1,11 @@ #ifdef CONFIG_SCHED_AUTOGROUP struct autogroup { + /* + * reference doesn't mean how many thread attach to this + * autogroup now. It just stands for the number of task + * could use this autogroup. + */ struct kref kref; struct task_group *tg; struct rw_semaphore lock;