
HULK inclusion category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/IBP72X CVE: CVE-2022-49647 ---------------------------------------------------------------------- Fix kabi caused by previous patch. Fixes: 43117406a9f1 ("cgroup: Use separate src/dst nodes when preloading css_sets for migration") Signed-off-by: Chen Ridong <chenridong@huawei.com> --- include/linux/cgroup-defs.h | 8 ++++++-- kernel/cgroup/cgroup.c | 18 +++++++++--------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/include/linux/cgroup-defs.h b/include/linux/cgroup-defs.h index bfca0ecdf1bf..1a48d1674c81 100644 --- a/include/linux/cgroup-defs.h +++ b/include/linux/cgroup-defs.h @@ -271,9 +271,9 @@ struct css_set { /* * List of csets participating in the on-going migration either as * source or destination. Protected by cgroup_mutex. + * To keep KABI, mg_preload_node is used as 'mg_src_preload_node' */ - struct list_head mg_src_preload_node; - struct list_head mg_dst_preload_node; + struct list_head mg_preload_node; struct list_head mg_node; /* @@ -293,8 +293,12 @@ struct css_set { /* For RCU-protected deletion */ struct rcu_head rcu_head; +#ifndef __GENKSYMS__ + struct list_head mg_dst_preload_node; +#else KABI_RESERVE(1) KABI_RESERVE(2) +#endif KABI_RESERVE(3) KABI_RESERVE(4) }; diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index a38dfaa87bfe..5b2b275950d8 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -745,7 +745,7 @@ struct css_set init_css_set = { .task_iters = LIST_HEAD_INIT(init_css_set.task_iters), .threaded_csets = LIST_HEAD_INIT(init_css_set.threaded_csets), .cgrp_links = LIST_HEAD_INIT(init_css_set.cgrp_links), - .mg_src_preload_node = LIST_HEAD_INIT(init_css_set.mg_src_preload_node), + .mg_preload_node = LIST_HEAD_INIT(init_css_set.mg_preload_node), .mg_dst_preload_node = LIST_HEAD_INIT(init_css_set.mg_dst_preload_node), .mg_node = LIST_HEAD_INIT(init_css_set.mg_node), @@ -1221,7 +1221,7 @@ static struct css_set *find_css_set(struct css_set *old_cset, INIT_LIST_HEAD(&cset->threaded_csets); INIT_HLIST_NODE(&cset->hlist); INIT_LIST_HEAD(&cset->cgrp_links); - INIT_LIST_HEAD(&cset->mg_src_preload_node); + INIT_LIST_HEAD(&cset->mg_preload_node); INIT_LIST_HEAD(&cset->mg_dst_preload_node); INIT_LIST_HEAD(&cset->mg_node); @@ -2662,11 +2662,11 @@ void cgroup_migrate_finish(struct cgroup_mgctx *mgctx) spin_lock_irq(&css_set_lock); list_for_each_entry_safe(cset, tmp_cset, &mgctx->preloaded_src_csets, - mg_src_preload_node) { + mg_preload_node) { cset->mg_src_cgrp = NULL; cset->mg_dst_cgrp = NULL; cset->mg_dst_cset = NULL; - list_del_init(&cset->mg_src_preload_node); + list_del_init(&cset->mg_preload_node); put_css_set_locked(cset); } @@ -2717,7 +2717,7 @@ void cgroup_migrate_add_src(struct css_set *src_cset, src_cgrp = cset_cgroup_from_root(src_cset, dst_cgrp->root); - if (!list_empty(&src_cset->mg_src_preload_node)) + if (!list_empty(&src_cset->mg_preload_node)) return; WARN_ON(src_cset->mg_src_cgrp); @@ -2728,7 +2728,7 @@ void cgroup_migrate_add_src(struct css_set *src_cset, src_cset->mg_src_cgrp = src_cgrp; src_cset->mg_dst_cgrp = dst_cgrp; get_css_set(src_cset); - list_add_tail(&src_cset->mg_src_preload_node, &mgctx->preloaded_src_csets); + list_add_tail(&src_cset->mg_preload_node, &mgctx->preloaded_src_csets); } /** @@ -2753,7 +2753,7 @@ int cgroup_migrate_prepare_dst(struct cgroup_mgctx *mgctx) /* look up the dst cset for each src cset and link it to src */ list_for_each_entry_safe(src_cset, tmp_cset, &mgctx->preloaded_src_csets, - mg_src_preload_node) { + mg_preload_node) { struct css_set *dst_cset; struct cgroup_subsys *ss; int ssid; @@ -2772,7 +2772,7 @@ int cgroup_migrate_prepare_dst(struct cgroup_mgctx *mgctx) if (src_cset == dst_cset) { src_cset->mg_src_cgrp = NULL; src_cset->mg_dst_cgrp = NULL; - list_del_init(&src_cset->mg_src_preload_node); + list_del_init(&src_cset->mg_preload_node); put_css_set(src_cset); put_css_set(dst_cset); continue; @@ -3054,7 +3054,7 @@ static int cgroup_update_dfl_csses(struct cgroup *cgrp) spin_lock_irq(&css_set_lock); list_for_each_entry(src_cset, &mgctx.preloaded_src_csets, - mg_src_preload_node) { + mg_preload_node) { struct task_struct *task, *ntask; /* all tasks in src_csets need to be migrated */ -- 2.34.1