diff options
Diffstat (limited to 'kernel/cgroup.c')
| -rw-r--r-- | kernel/cgroup.c | 18 | 
1 files changed, 18 insertions, 0 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index 85bc9beb046d..2ee9ec3051b2 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c @@ -5074,6 +5074,8 @@ static void css_release_work_fn(struct work_struct *work)  		if (cgrp->kn)  			RCU_INIT_POINTER(*(void __rcu __force **)&cgrp->kn->priv,  					 NULL); + +		cgroup_bpf_put(cgrp);  	}  	mutex_unlock(&cgroup_mutex); @@ -5281,6 +5283,9 @@ static struct cgroup *cgroup_create(struct cgroup *parent)  	if (!cgroup_on_dfl(cgrp))  		cgrp->subtree_control = cgroup_control(cgrp); +	if (parent) +		cgroup_bpf_inherit(cgrp, parent); +  	cgroup_propagate_control(cgrp);  	/* @cgrp doesn't have dir yet so the following will only create csses */ @@ -6495,6 +6500,19 @@ static __init int cgroup_namespaces_init(void)  }  subsys_initcall(cgroup_namespaces_init); +#ifdef CONFIG_CGROUP_BPF +void cgroup_bpf_update(struct cgroup *cgrp, +		       struct bpf_prog *prog, +		       enum bpf_attach_type type) +{ +	struct cgroup *parent = cgroup_parent(cgrp); + +	mutex_lock(&cgroup_mutex); +	__cgroup_bpf_update(cgrp, parent, prog, type); +	mutex_unlock(&cgroup_mutex); +} +#endif /* CONFIG_CGROUP_BPF */ +  #ifdef CONFIG_CGROUP_DEBUG  static struct cgroup_subsys_state *  debug_css_alloc(struct cgroup_subsys_state *parent_css)  |