diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c index a26169094712b8cbe091a9031efa53be4094a387..b776ba4127db717f1434b109508a7813f9620120 100644 --- a/drivers/base/arch_topology.c +++ b/drivers/base/arch_topology.c @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index d6f43bca5ecb58e22b0a88817db6670ab889ca49..29fb4556d123ec3d29a7bbba4133ccd6519ba036 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -905,6 +905,10 @@ static inline struct cgroup_ifs *cgroup_ifs(struct cgroup *cgrp) static inline struct cgroup_ifs *task_ifs(struct task_struct *task) { +#ifdef CONFIG_CGROUP_CPUACCT + if (!cgroup_subsys_on_dfl(cpuacct_cgrp_subsys)) + return cgroup_ifs(task_cgroup(task, cpuacct_cgrp_id)); +#endif return cgroup_ifs(task_dfl_cgroup(task)); } diff --git a/init/init_task.c b/init/init_task.c index 1adc171495587eb3d48948dc19e2a6333f1705b0..275ae1f2ff1c896fb467e4b8fc0cff762683a7fd 100644 --- a/init/init_task.c +++ b/init/init_task.c @@ -12,6 +12,7 @@ #include #include #include +#include #include @@ -61,6 +62,10 @@ static struct task_struct_resvd init_task_struct_resvd = { .task = &init_task, }; +#ifdef CONFIG_CGROUP_IFS +static struct css_set dummy_css; +#endif + /* * Set up the first task table, touch at your own risk!. Base=0, * limit=0x1fffff (=2MB) @@ -168,6 +173,9 @@ struct task_struct init_task .mems_allowed_seq = SEQCNT_SPINLOCK_ZERO(init_task.mems_allowed_seq, &init_task.alloc_lock), #endif +#ifdef CONFIG_CGROUP_IFS + .cgroups = &dummy_css, +#endif #ifdef CONFIG_RT_MUTEXES .pi_waiters = RB_ROOT_CACHED, .pi_top_task = NULL,