diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2011-02-07 11:02:20 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-02-16 07:30:47 -0500 |
commit | d41d5a01631af821d3a3447e6613a316f5ee6c25 (patch) | |
tree | 405ab6bc24e06a64dc17ccafb6daead1400cb29e /kernel/sched.c | |
parent | b00560f2d4de69bb12f66f9605985b516df98d77 (diff) |
cgroup: Fix cgroup_subsys::exit callback
Make the ::exit method act like ::attach, it is after all very nearly
the same thing.
The bug had no effect on correctness - fixing it is an optimization for
the scheduler. Also, later perf-cgroups patches rely on it.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Paul Menage <menage@google.com>
LKML-Reference: <1297160655.13327.92.camel@laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index e142e92f38da..79e611cd83dd 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -606,9 +606,6 @@ static inline struct task_group *task_group(struct task_struct *p) | |||
606 | struct task_group *tg; | 606 | struct task_group *tg; |
607 | struct cgroup_subsys_state *css; | 607 | struct cgroup_subsys_state *css; |
608 | 608 | ||
609 | if (p->flags & PF_EXITING) | ||
610 | return &root_task_group; | ||
611 | |||
612 | css = task_subsys_state_check(p, cpu_cgroup_subsys_id, | 609 | css = task_subsys_state_check(p, cpu_cgroup_subsys_id, |
613 | lockdep_is_held(&task_rq(p)->lock)); | 610 | lockdep_is_held(&task_rq(p)->lock)); |
614 | tg = container_of(css, struct task_group, css); | 611 | tg = container_of(css, struct task_group, css); |
@@ -8863,7 +8860,8 @@ cpu_cgroup_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, | |||
8863 | } | 8860 | } |
8864 | 8861 | ||
8865 | static void | 8862 | static void |
8866 | cpu_cgroup_exit(struct cgroup_subsys *ss, struct task_struct *task) | 8863 | cpu_cgroup_exit(struct cgroup_subsys *ss, struct cgroup *cgrp, |
8864 | struct cgroup *old_cgrp, struct task_struct *task) | ||
8867 | { | 8865 | { |
8868 | /* | 8866 | /* |
8869 | * cgroup_exit() is called in the copy_process() failure path. | 8867 | * cgroup_exit() is called in the copy_process() failure path. |