All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch added to 3.12-stable] sched: Fix race between task_group and sched_task_group
@ 2016-04-01  8:36 Jiri Slaby
  2016-04-01  8:36 ` [patch added to 3.12-stable] Btrfs: skip locking when searching commit root Jiri Slaby
                   ` (15 more replies)
  0 siblings, 16 replies; 19+ messages in thread
From: Jiri Slaby @ 2016-04-01  8:36 UTC (permalink / raw)
  To: stable
  Cc: Kirill Tkhai, Peter Zijlstra, Linus Torvalds, Ingo Molnar,
	Jiri Slaby

From: Kirill Tkhai <ktkhai@parallels.com>

This patch has been added to the 3.12 stable tree. If you have any
objections, please let us know.

===============

commit eeb61e53ea19be0c4015b00b2e8b3b2185436f2b upstream.

The race may happen when somebody is changing task_group of a forking task.
Child's cgroup is the same as parent's after dup_task_struct() (there just
memory copying). Also, cfs_rq and rt_rq are the same as parent's.

But if parent changes its task_group before it's called cgroup_post_fork(),
we do not reflect this situation on child. Child's cfs_rq and rt_rq remain
the same, while child's task_group changes in cgroup_post_fork().

To fix this we introduce fork() method, which calls sched_move_task() directly.
This function changes sched_task_group on appropriate (also its logic has
no problem with freshly created tasks, so we shouldn't introduce something
special; we are able just to use it).

Possibly, this decides the Burke Libbey's problem: https://lkml.org/lkml/2014/10/24/456

Signed-off-by: Kirill Tkhai <ktkhai@parallels.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Link: http://lkml.kernel.org/r/1414405105.19914.169.camel@tkhai
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
---
 kernel/sched/core.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 3800316d7424..7381119ec1e9 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -7233,6 +7233,11 @@ static void cpu_cgroup_css_offline(struct cgroup_subsys_state *css)
 	sched_offline_group(tg);
 }
 
+static void cpu_cgroup_fork(struct task_struct *task)
+{
+	sched_move_task(task);
+}
+
 static int cpu_cgroup_can_attach(struct cgroup_subsys_state *css,
 				 struct cgroup_taskset *tset)
 {
@@ -7602,6 +7607,7 @@ struct cgroup_subsys cpu_cgroup_subsys = {
 	.css_free	= cpu_cgroup_css_free,
 	.css_online	= cpu_cgroup_css_online,
 	.css_offline	= cpu_cgroup_css_offline,
+	.fork		= cpu_cgroup_fork,
 	.can_attach	= cpu_cgroup_can_attach,
 	.attach		= cpu_cgroup_attach,
 	.exit		= cpu_cgroup_exit,
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2016-04-01  9:41 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-01  8:36 [patch added to 3.12-stable] sched: Fix race between task_group and sched_task_group Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] Btrfs: skip locking when searching commit root Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] bnx2x: Add new device ids under the Qlogic vendor Jiri Slaby
2016-04-01  8:59   ` Yuval Mintz
2016-04-01  9:41     ` Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] drivers/base/memory.c: fix kernel warning during memory hotplug on ppc64 Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] ALSA: rawmidi: Make snd_rawmidi_transmit() race-free Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] ALSA: seq: Fix leak of pool buffer at concurrent writes Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] memcg: do not hang on OOM when killed by userspace OOM access to memory reserves Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] USB: fix invalid memory access in hub_activate() Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] intel_pstate: Use del_timer_sync in intel_pstate_cpu_stop Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] KVM: SVM: add rdmsr support for AMD event registers Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] USB: visor: fix null-deref at probe Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] s390/mm: four page table levels vs. fork Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] hwmon: (coretemp) Increase limit of maximum core ID from 32 to 128 Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] perf, nmi: Fix unknown NMI warning Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] Fix kmalloc overflow in LPFC driver at large core count Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] nfs: fix high load average due to callback thread sleeping Jiri Slaby
2016-04-01  8:36 ` [patch added to 3.12-stable] net/ipv6: fix DEVCONF_ constants Jiri Slaby

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.