Lines Matching refs:bpf
111 ret = bpf_prog_run_array_cg(&cgrp->bpf, in __cgroup_bpf_run_lsm_sock()
133 ret = bpf_prog_run_array_cg(&cgrp->bpf, in __cgroup_bpf_run_lsm_socket()
152 ret = bpf_prog_run_array_cg(&cgrp->bpf, in __cgroup_bpf_run_lsm_current()
224 percpu_ref_kill(&cgrp->bpf.refcnt); in cgroup_bpf_offline()
307 bpf.release_work); in cgroup_bpf_release()
309 struct list_head *storages = &cgrp->bpf.storages; in cgroup_bpf_release()
316 for (atype = 0; atype < ARRAY_SIZE(cgrp->bpf.progs); atype++) { in cgroup_bpf_release()
317 struct hlist_head *progs = &cgrp->bpf.progs[atype]; in cgroup_bpf_release()
337 cgrp->bpf.effective[atype], in cgroup_bpf_release()
352 percpu_ref_exit(&cgrp->bpf.refcnt); in cgroup_bpf_release()
363 struct cgroup *cgrp = container_of(ref, struct cgroup, bpf.refcnt); in cgroup_bpf_release_fn()
365 INIT_WORK(&cgrp->bpf.release_work, cgroup_bpf_release); in cgroup_bpf_release_fn()
366 queue_work(cgroup_bpf_destroy_wq, &cgrp->bpf.release_work); in cgroup_bpf_release_fn()
412 u32 flags = p->bpf.flags[atype]; in hierarchy_allows_attach()
417 cnt = prog_list_length(&p->bpf.progs[atype], NULL); in hierarchy_allows_attach()
444 if (cnt == 0 || (p->bpf.flags[atype] & BPF_F_ALLOW_MULTI)) in compute_effective_progs()
445 cnt += prog_list_length(&p->bpf.progs[atype], &preorder_cnt); in compute_effective_progs()
459 if (cnt > 0 && !(p->bpf.flags[atype] & BPF_F_ALLOW_MULTI)) in compute_effective_progs()
463 hlist_for_each_entry(pl, &p->bpf.progs[atype], node) { in compute_effective_progs()
494 old_array = rcu_replace_pointer(cgrp->bpf.effective[atype], old_array, in activate_effective_progs()
511 #define NR ARRAY_SIZE(cgrp->bpf.effective) in cgroup_bpf_inherit()
516 ret = percpu_ref_init(&cgrp->bpf.refcnt, cgroup_bpf_release_fn, 0, in cgroup_bpf_inherit()
525 INIT_HLIST_HEAD(&cgrp->bpf.progs[i]); in cgroup_bpf_inherit()
527 INIT_LIST_HEAD(&cgrp->bpf.storages); in cgroup_bpf_inherit()
544 percpu_ref_exit(&cgrp->bpf.refcnt); in cgroup_bpf_inherit()
580 if (percpu_ref_is_zero(&desc->bpf.refcnt)) in update_effective_progs()
583 err = compute_effective_progs(desc, atype, &desc->bpf.inactive); in update_effective_progs()
592 if (percpu_ref_is_zero(&desc->bpf.refcnt)) { in update_effective_progs()
593 if (unlikely(desc->bpf.inactive)) { in update_effective_progs()
594 bpf_prog_array_free(desc->bpf.inactive); in update_effective_progs()
595 desc->bpf.inactive = NULL; in update_effective_progs()
600 activate_effective_progs(desc, atype, desc->bpf.inactive); in update_effective_progs()
601 desc->bpf.inactive = NULL; in update_effective_progs()
613 bpf_prog_array_free(desc->bpf.inactive); in update_effective_progs()
614 desc->bpf.inactive = NULL; in update_effective_progs()
818 if (revision && revision != cgrp->bpf.revisions[atype]) in __cgroup_bpf_attach()
821 progs = &cgrp->bpf.progs[atype]; in __cgroup_bpf_attach()
826 if (!hlist_empty(progs) && cgrp->bpf.flags[atype] != saved_flags) in __cgroup_bpf_attach()
866 cgrp->bpf.flags[atype] = saved_flags; in __cgroup_bpf_attach()
878 cgrp->bpf.revisions[atype] += 1; in __cgroup_bpf_attach()
939 if (percpu_ref_is_zero(&desc->bpf.refcnt)) in replace_effective_prog()
944 if (pos && !(cg->bpf.flags[atype] & BPF_F_ALLOW_MULTI)) in replace_effective_prog()
947 head = &cg->bpf.progs[atype]; in replace_effective_prog()
959 desc->bpf.effective[atype], in replace_effective_prog()
990 progs = &cgrp->bpf.progs[atype]; in __cgroup_bpf_replace()
1004 cgrp->bpf.revisions[atype] += 1; in __cgroup_bpf_replace()
1092 if (percpu_ref_is_zero(&desc->bpf.refcnt)) in purge_effective_progs()
1097 if (pos && !(cg->bpf.flags[atype] & BPF_F_ALLOW_MULTI)) in purge_effective_progs()
1100 head = &cg->bpf.progs[atype]; in purge_effective_progs()
1114 desc->bpf.effective[atype], in purge_effective_progs()
1155 if (revision && revision != cgrp->bpf.revisions[atype]) in __cgroup_bpf_detach()
1158 progs = &cgrp->bpf.progs[atype]; in __cgroup_bpf_detach()
1159 flags = cgrp->bpf.flags[atype]; in __cgroup_bpf_detach()
1183 cgrp->bpf.revisions[atype] += 1; in __cgroup_bpf_detach()
1188 cgrp->bpf.flags[atype] = 0; in __cgroup_bpf_detach()
1241 flags = cgrp->bpf.flags[from_atype]; in __cgroup_bpf_query()
1246 effective = rcu_dereference_protected(cgrp->bpf.effective[atype], in __cgroup_bpf_query()
1250 total_cnt += prog_list_length(&cgrp->bpf.progs[atype], NULL); in __cgroup_bpf_query()
1261 revision = cgrp->bpf.revisions[from_atype]; in __cgroup_bpf_query()
1275 effective = rcu_dereference_protected(cgrp->bpf.effective[atype], in __cgroup_bpf_query()
1285 progs = &cgrp->bpf.progs[atype]; in __cgroup_bpf_query()
1298 flags = cgrp->bpf.flags[atype]; in __cgroup_bpf_query()
1586 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, skb, in __cgroup_bpf_run_filter_skb()
1612 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, in __cgroup_bpf_run_filter_skb()
1644 return bpf_prog_run_array_cg(&cgrp->bpf, atype, sk, bpf_prog_run, 0, in __cgroup_bpf_run_filter_sk()
1695 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, in __cgroup_bpf_run_filter_sock_addr()
1727 return bpf_prog_run_array_cg(&cgrp->bpf, atype, sock_ops, bpf_prog_run, in __cgroup_bpf_run_filter_sock_ops()
1745 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, 0, in __cgroup_bpf_check_dev_permission()
1932 ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, 0, in __cgroup_bpf_run_filter_sysctl()
2026 ret = bpf_prog_run_array_cg(&cgrp->bpf, CGROUP_SETSOCKOPT, in __cgroup_bpf_run_filter_setsockopt()
2135 ret = bpf_prog_run_array_cg(&cgrp->bpf, CGROUP_GETSOCKOPT, in __cgroup_bpf_run_filter_getsockopt()
2195 ret = bpf_prog_run_array_cg(&cgrp->bpf, CGROUP_GETSOCKOPT, in __cgroup_bpf_run_filter_getsockopt_kern()