Unverified Commit bc5ef08e authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!14990 mainline patches

Merge Pull Request from: @ci-robot 
 
PR sync from: Chen Ridong <chenridong@huawei.com>
https://mailweb.openeuler.org/hyperkitty/list/kernel@openeuler.org/message/BCRLRSFJ5WQWJCDK5KP74KNLKN2MLNEB/ 
mainline patches

Chen Ridong (2):
  Revert "cgroup: Fix memory leak caused by missing cgroup_bpf_offline"
  cgroup/bpf: only cgroup v2 can be attached by bpf programs

Waiman Long (1):
  cgroup/cpuset: Prevent leakage of isolated CPUs into sched domains


-- 
2.34.1
 
https://gitee.com/openeuler/kernel/issues/IBJ6GQ
https://gitee.com/openeuler/kernel/issues/IBA6RL 
 
Link:https://gitee.com/openeuler/kernel/pulls/14990

 

Reviewed-by: default avatarZhang Peng <zhangpeng362@huawei.com>
Signed-off-by: default avatarZhang Peng <zhangpeng362@huawei.com>
parents c95957fb a5801758
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -2113,8 +2113,10 @@ int cgroup_setup_root(struct cgroup_root *root, u16 ss_mask)
	if (ret)
		goto exit_stats;

	if (root == &cgrp_dfl_root) {
		ret = cgroup_bpf_inherit(root_cgrp);
		WARN_ON_ONCE(ret);
	}

	trace_cgroup_setup_root(root);

@@ -2298,10 +2300,8 @@ static void cgroup_kill_sb(struct super_block *sb)
	 * And don't kill the default root.
	 */
	if (list_empty(&root->cgrp.self.children) && root != &cgrp_dfl_root &&
	    !percpu_ref_is_dying(&root->cgrp.self.refcnt)) {
		cgroup_bpf_offline(&root->cgrp);
	    !percpu_ref_is_dying(&root->cgrp.self.refcnt))
		percpu_ref_kill(&root->cgrp.self.refcnt);
	}
	cgroup_put(&root->cgrp);
	kernfs_kill_sb(sb);
}
@@ -5727,9 +5727,11 @@ static struct cgroup *cgroup_create(struct cgroup *parent, const char *name,
	if (ret)
		goto out_kernfs_remove;

	if (cgrp->root == &cgrp_dfl_root) {
		ret = cgroup_bpf_inherit(cgrp);
		if (ret)
			goto out_psi_free;
	}

	/*
	 * New cgroup inherits effective freeze counter, and
@@ -6057,6 +6059,7 @@ static int cgroup_destroy_locked(struct cgroup *cgrp)

	cgroup1_check_for_release(parent);

	if (cgrp->root == &cgrp_dfl_root)
		cgroup_bpf_offline(cgrp);

	/* put the base reference */
+9 −1
Original line number Diff line number Diff line
@@ -1247,6 +1247,14 @@ static int generate_sched_domains(cpumask_var_t **domains,
	 */
	if (cgrpv2) {
		for (i = 0; i < ndoms; i++) {
			/*
			 * The top cpuset may contain some boot time isolated
			 * CPUs that need to be excluded from the sched domain.
			 */
			if (csa[i] == &top_cpuset)
				cpumask_and(doms[i], csa[i]->effective_cpus,
					    housekeeping_cpumask(HK_TYPE_DOMAIN));
			else
				cpumask_copy(doms[i], csa[i]->effective_cpus);
			if (dattr)
				dattr[i] = SD_ATTR_INIT;