diff options
| -rw-r--r-- | kernel/sched/core.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index cc1e3e0d29b0..e01bd807f0af 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
| @@ -6811,11 +6811,20 @@ cpu_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) | |||
| 6811 | if (IS_ERR(tg)) | 6811 | if (IS_ERR(tg)) |
| 6812 | return ERR_PTR(-ENOMEM); | 6812 | return ERR_PTR(-ENOMEM); |
| 6813 | 6813 | ||
| 6814 | sched_online_group(tg, parent); | ||
| 6815 | |||
| 6816 | return &tg->css; | 6814 | return &tg->css; |
| 6817 | } | 6815 | } |
| 6818 | 6816 | ||
| 6817 | /* Expose task group only after completing cgroup initialization */ | ||
| 6818 | static int cpu_cgroup_css_online(struct cgroup_subsys_state *css) | ||
| 6819 | { | ||
| 6820 | struct task_group *tg = css_tg(css); | ||
| 6821 | struct task_group *parent = css_tg(css->parent); | ||
| 6822 | |||
| 6823 | if (parent) | ||
| 6824 | sched_online_group(tg, parent); | ||
| 6825 | return 0; | ||
| 6826 | } | ||
| 6827 | |||
| 6819 | static void cpu_cgroup_css_released(struct cgroup_subsys_state *css) | 6828 | static void cpu_cgroup_css_released(struct cgroup_subsys_state *css) |
| 6820 | { | 6829 | { |
| 6821 | struct task_group *tg = css_tg(css); | 6830 | struct task_group *tg = css_tg(css); |
| @@ -7221,6 +7230,7 @@ static struct cftype cpu_files[] = { | |||
| 7221 | 7230 | ||
| 7222 | struct cgroup_subsys cpu_cgrp_subsys = { | 7231 | struct cgroup_subsys cpu_cgrp_subsys = { |
| 7223 | .css_alloc = cpu_cgroup_css_alloc, | 7232 | .css_alloc = cpu_cgroup_css_alloc, |
| 7233 | .css_online = cpu_cgroup_css_online, | ||
| 7224 | .css_released = cpu_cgroup_css_released, | 7234 | .css_released = cpu_cgroup_css_released, |
| 7225 | .css_free = cpu_cgroup_css_free, | 7235 | .css_free = cpu_cgroup_css_free, |
| 7226 | .fork = cpu_cgroup_fork, | 7236 | .fork = cpu_cgroup_fork, |
