/kernel/bpf/ |
D | mprog.c | 11 struct bpf_link *link = ERR_PTR(-EINVAL); in bpf_mprog_link() local 15 link = bpf_link_by_id(id_or_fd); in bpf_mprog_link() 17 link = bpf_link_get_from_fd(id_or_fd); in bpf_mprog_link() 18 if (IS_ERR(link)) in bpf_mprog_link() 19 return PTR_ERR(link); in bpf_mprog_link() 20 if (type && link->prog->type != type) { in bpf_mprog_link() 21 bpf_link_put(link); in bpf_mprog_link() 25 tuple->link = link; in bpf_mprog_link() 26 tuple->prog = link->prog; in bpf_mprog_link() 48 tuple->link = NULL; in bpf_mprog_prog() [all …]
|
D | bpf_iter.c | 17 struct bpf_link link; member 41 static int prepare_seq_file(struct file *file, struct bpf_iter_link *link, 243 __get_seq_info(struct bpf_iter_link *link) in __get_seq_info() argument 247 if (link->aux.map) { in __get_seq_info() 248 seq_info = link->aux.map->ops->iter_seq_info; in __get_seq_info() 253 return link->tinfo->reg_info->seq_info; in __get_seq_info() 258 struct bpf_iter_link *link = inode->i_private; in iter_open() local 260 return prepare_seq_file(file, link, __get_seq_info(link)); in iter_open() 394 static void bpf_iter_link_release(struct bpf_link *link) in bpf_iter_link_release() argument 397 container_of(link, struct bpf_iter_link, link); in bpf_iter_link_release() [all …]
|
D | tcx.c | 112 if (tuple.link) in tcx_uninstall() 113 tcx_link(tuple.link)->dev = NULL; in tcx_uninstall() 141 static int tcx_link_prog_attach(struct bpf_link *link, u32 flags, u32 id_or_fd, in tcx_link_prog_attach() argument 144 struct tcx_link *tcx = tcx_link(link); in tcx_link_prog_attach() 154 ret = bpf_mprog_attach(entry, &entry_new, link->prog, link, NULL, flags, in tcx_link_prog_attach() 169 static void tcx_link_release(struct bpf_link *link) in tcx_link_release() argument 171 struct tcx_link *tcx = tcx_link(link); in tcx_link_release() 186 ret = bpf_mprog_detach(entry, &entry_new, link->prog, link, 0, 0, 0); in tcx_link_release() 203 static int tcx_link_update(struct bpf_link *link, struct bpf_prog *nprog, in tcx_link_update() argument 206 struct tcx_link *tcx = tcx_link(link); in tcx_link_update() [all …]
|
D | trampoline.c | 231 struct bpf_tramp_link *link; in bpf_trampoline_get_progs() local 246 hlist_for_each_entry(link, &tr->progs_hlist[kind], tramp_hlist) { in bpf_trampoline_get_progs() 247 *ip_arg |= link->link.prog->call_get_func_ip; in bpf_trampoline_get_progs() 248 *links++ = link; in bpf_trampoline_get_progs() 513 static int __bpf_trampoline_link_prog(struct bpf_tramp_link *link, struct bpf_trampoline *tr) in __bpf_trampoline_link_prog() argument 520 kind = bpf_attach_type_to_tramp(link->link.prog); in __bpf_trampoline_link_prog() 534 tr->extension_prog = link->link.prog; in __bpf_trampoline_link_prog() 536 link->link.prog->bpf_func); in __bpf_trampoline_link_prog() 540 if (!hlist_unhashed(&link->tramp_hlist)) in __bpf_trampoline_link_prog() 544 if (link_exiting->link.prog != link->link.prog) in __bpf_trampoline_link_prog() [all …]
|
D | net_namespace.c | 13 struct bpf_link link; member 67 struct bpf_netns_link *link) in link_index() argument 73 if (pos == link) in link_index() 97 prog_array->items[i].prog = pos->link.prog; in fill_prog_array() 102 static void bpf_netns_link_release(struct bpf_link *link) in bpf_netns_link_release() argument 105 container_of(link, struct bpf_netns_link, link); in bpf_netns_link_release() 150 static int bpf_netns_link_detach(struct bpf_link *link) in bpf_netns_link_detach() argument 152 bpf_netns_link_release(link); in bpf_netns_link_detach() 156 static void bpf_netns_link_dealloc(struct bpf_link *link) in bpf_netns_link_dealloc() argument 159 container_of(link, struct bpf_netns_link, link); in bpf_netns_link_dealloc() [all …]
|
D | syscall.c | 2829 void bpf_link_init(struct bpf_link *link, enum bpf_link_type type, in bpf_link_init() argument 2832 atomic64_set(&link->refcnt, 1); in bpf_link_init() 2833 link->type = type; in bpf_link_init() 2834 link->id = 0; in bpf_link_init() 2835 link->ops = ops; in bpf_link_init() 2836 link->prog = prog; in bpf_link_init() 2860 primer->link->prog = NULL; in bpf_link_cleanup() 2866 void bpf_link_inc(struct bpf_link *link) in bpf_link_inc() argument 2868 atomic64_inc(&link->refcnt); in bpf_link_inc() 2873 struct bpf_link *link = container_of(rcu, struct bpf_link, rcu); in bpf_link_defer_dealloc_rcu_gp() local [all …]
|
D | bpf_struct_ops.c | 64 struct bpf_link link; member 336 static void bpf_struct_ops_link_release(struct bpf_link *link) in bpf_struct_ops_link_release() argument 340 static void bpf_struct_ops_link_dealloc(struct bpf_link *link) in bpf_struct_ops_link_dealloc() argument 342 struct bpf_tramp_link *tlink = container_of(link, struct bpf_tramp_link, link); in bpf_struct_ops_link_dealloc() 353 struct bpf_tramp_link *link, in bpf_struct_ops_prepare_trampoline() argument 359 tlinks[BPF_TRAMP_FENTRY].links[0] = link; in bpf_struct_ops_prepare_trampoline() 425 struct bpf_tramp_link *link; in bpf_struct_ops_map_update_elem() local 488 link = kzalloc(sizeof(*link), GFP_USER); in bpf_struct_ops_map_update_elem() 489 if (!link) { in bpf_struct_ops_map_update_elem() 494 bpf_link_init(&link->link, BPF_LINK_TYPE_STRUCT_OPS, in bpf_struct_ops_map_update_elem() [all …]
|
D | cgroup.c | 264 static void bpf_cgroup_link_auto_detach(struct bpf_cgroup_link *link) in bpf_cgroup_link_auto_detach() argument 266 cgroup_put(link->cgroup); in bpf_cgroup_link_auto_detach() 267 link->cgroup = NULL; in bpf_cgroup_link_auto_detach() 299 if (pl->link) { in cgroup_bpf_release() 300 if (pl->link->link.prog->expected_attach_type == BPF_LSM_CGROUP) in cgroup_bpf_release() 301 bpf_trampoline_unlink_cgroup_shim(pl->link->link.prog); in cgroup_bpf_release() 302 bpf_cgroup_link_auto_detach(pl->link); in cgroup_bpf_release() 347 if (pl->link) in prog_list_prog() 348 return pl->link->link.prog; in prog_list_prog() 558 struct bpf_cgroup_link *link, in find_attach_entry() argument [all …]
|
D | link_iter.c | 16 struct bpf_link *link; in bpf_link_seq_start() local 18 link = bpf_link_get_curr_or_next(&info->link_id); in bpf_link_seq_start() 19 if (!link) in bpf_link_seq_start() 24 return link; in bpf_link_seq_start() 39 __bpf_md_ptr(struct bpf_link *, link); 42 DEFINE_BPF_ITER_FUNC(bpf_link, struct bpf_iter_meta *meta, struct bpf_link *link) in DEFINE_BPF_ITER_FUNC() argument 52 ctx.link = v; in DEFINE_BPF_ITER_FUNC() 95 { offsetof(struct bpf_iter__bpf_link, link),
|
D | inode.c | 363 struct bpf_link *link = arg; in bpf_mklink() local 366 bpf_link_is_iter(link) ? in bpf_mklink() 386 char *link = kstrdup(target, GFP_USER | __GFP_NOWARN); in bpf_symlink() local 389 if (!link) in bpf_symlink() 394 kfree(link); in bpf_symlink() 399 inode->i_link = link; in bpf_symlink() 411 .link = simple_link, 417 const char *name, struct bpf_link *link) in bpf_iter_link_pin_kernel() argument 429 ret = bpf_mkobj_ops(dentry, mode, link, &bpf_link_iops, in bpf_iter_link_pin_kernel() 725 bpf_link_inc(objs[i].link); in populate_bpffs() [all …]
|
/kernel/trace/ |
D | bpf_trace.c | 2510 struct bpf_link link; member 2522 struct bpf_kprobe_multi_link *link; member 2587 static void bpf_kprobe_multi_link_release(struct bpf_link *link) in bpf_kprobe_multi_link_release() argument 2591 kmulti_link = container_of(link, struct bpf_kprobe_multi_link, link); in bpf_kprobe_multi_link_release() 2596 static void bpf_kprobe_multi_link_dealloc(struct bpf_link *link) in bpf_kprobe_multi_link_dealloc() argument 2600 kmulti_link = container_of(link, struct bpf_kprobe_multi_link, link); in bpf_kprobe_multi_link_dealloc() 2607 static int bpf_kprobe_multi_link_fill_link_info(const struct bpf_link *link, in bpf_kprobe_multi_link_fill_link_info() argument 2618 kmulti_link = container_of(link, struct bpf_kprobe_multi_link, link); in bpf_kprobe_multi_link_fill_link_info() 2649 const struct bpf_kprobe_multi_link *link = priv; in bpf_kprobe_multi_cookie_swap() local 2653 cookie_a = link->cookies + (addr_a - link->addrs); in bpf_kprobe_multi_cookie_swap() [all …]
|
D | trace_probe.c | 296 list_for_each_entry(field, head, link) { in parse_trace_event_arg() 1859 struct event_file_link *link; in trace_probe_add_file() local 1861 link = kmalloc(sizeof(*link), GFP_KERNEL); in trace_probe_add_file() 1862 if (!link) in trace_probe_add_file() 1865 link->file = file; in trace_probe_add_file() 1866 INIT_LIST_HEAD(&link->list); in trace_probe_add_file() 1867 list_add_tail_rcu(&link->list, &tp->event->files); in trace_probe_add_file() 1875 struct event_file_link *link; in trace_probe_get_file_link() local 1877 trace_probe_for_each_link(link, tp) { in trace_probe_get_file_link() 1878 if (link->file == file) in trace_probe_get_file_link() [all …]
|
D | trace_fprobe.c | 206 struct event_file_link *link; in fentry_trace_func() local 208 trace_probe_for_each_link_rcu(link, &tf->tp) in fentry_trace_func() 209 __fentry_trace_func(tf, entry_ip, regs, link->file); in fentry_trace_func() 250 struct event_file_link *link; in fexit_trace_func() local 252 trace_probe_for_each_link_rcu(link, &tf->tp) in fexit_trace_func() 253 __fexit_trace_func(tf, entry_ip, ret_ip, regs, link->file); in fexit_trace_func()
|
D | trace_events_inject.c | 145 list_for_each_entry(field, head, link) { in trace_get_entry_size() 166 list_for_each_entry(field, head, link) { in trace_alloc_entry()
|
D | trace_uprobe.c | 989 struct event_file_link *link; in uprobe_trace_func() local 995 trace_probe_for_each_link_rcu(link, &tu->tp) in uprobe_trace_func() 996 __uprobe_trace_func(tu, 0, regs, ucb, dsize, link->file); in uprobe_trace_func() 1006 struct event_file_link *link; in uretprobe_trace_func() local 1009 trace_probe_for_each_link_rcu(link, &tu->tp) in uretprobe_trace_func() 1010 __uprobe_trace_func(tu, func, regs, ucb, dsize, link->file); in uretprobe_trace_func()
|
D | trace_events_user.c | 1084 list_for_each_entry_safe(field, next, head, link) { in user_event_destroy_fields() 1085 list_del(&field->link); in user_event_destroy_fields() 1141 list_add(&field->link, &user->fields); in user_event_add_field() 1377 list_for_each_entry_reverse(field, head, link) { in user_event_set_print_fmt() 1389 list_for_each_entry_reverse(field, head, link) { in user_event_set_print_fmt() 1789 list_for_each_entry_reverse(field, head, link) { in user_event_show() 1875 list_for_each_entry_reverse(field, head, link) { in user_fields_match()
|
D | trace_kprobe.c | 1374 struct event_file_link *link; in kprobe_trace_func() local 1376 trace_probe_for_each_link_rcu(link, &tk->tp) in kprobe_trace_func() 1377 __kprobe_trace_func(tk, regs, link->file); in kprobe_trace_func() 1416 struct event_file_link *link; in kretprobe_trace_func() local 1418 trace_probe_for_each_link_rcu(link, &tk->tp) in kretprobe_trace_func() 1419 __kretprobe_trace_func(tk, ri, regs, link->file); in kretprobe_trace_func()
|
/kernel/ |
D | user-return-notifier.c | 18 hlist_add_head(&urn->link, this_cpu_ptr(&return_notifier_list)); in user_return_notifier_register() 28 hlist_del(&urn->link); in user_return_notifier_unregister() 42 hlist_for_each_entry_safe(urn, tmp2, head, link) in fire_user_return_notifiers()
|
/kernel/cgroup/ |
D | debug.c | 89 struct cgrp_cset_link *link; in current_css_set_cg_links_read() local 100 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) { in current_css_set_cg_links_read() 101 struct cgroup *c = link->cgrp; in current_css_set_cg_links_read() 117 struct cgrp_cset_link *link; in cgroup_css_links_read() local 122 list_for_each_entry(link, &css->cgroup->cset_links, cset_link) { in cgroup_css_links_read() 123 struct css_set *cset = link->cset; in cgroup_css_links_read()
|
D | cgroup.c | 613 struct cgrp_cset_link *link; in __cgroup_task_count() local 617 list_for_each_entry(link, &cgrp->cset_links, cset_link) in __cgroup_task_count() 618 count += link->cset->nr_tasks; in __cgroup_task_count() 834 struct cgrp_cset_link *link; in css_set_update_populated() local 838 list_for_each_entry(link, &cset->cgrp_links, cgrp_link) in css_set_update_populated() 839 cgroup_update_populated(link->cgrp, populated); in css_set_update_populated() 929 struct cgrp_cset_link *link, *tmp_link; in put_css_set_locked() local 948 list_for_each_entry_safe(link, tmp_link, &cset->cgrp_links, cgrp_link) { in put_css_set_locked() 949 list_del(&link->cset_link); in put_css_set_locked() 950 list_del(&link->cgrp_link); in put_css_set_locked() [all …]
|
/kernel/locking/ |
D | test-ww_mutex.c | 472 struct list_head link; member 495 list_add(&ll->link, &locks); in stress_reorder_work() 503 list_for_each_entry(ll, &locks, link) { in stress_reorder_work() 509 list_for_each_entry_continue_reverse(ln, &locks, link) in stress_reorder_work() 519 list_move(&ll->link, &locks); /* restarts iteration */ in stress_reorder_work() 523 list_for_each_entry(ll, &locks, link) in stress_reorder_work() 530 list_for_each_entry_safe(ll, ln, &locks, link) in stress_reorder_work()
|
D | locktorture.c | 531 struct list_head link; in torture_ww_mutex_lock() member 537 list_add(&locks[0].link, &list); in torture_ww_mutex_lock() 540 list_add(&locks[1].link, &list); in torture_ww_mutex_lock() 543 list_add(&locks[2].link, &list); in torture_ww_mutex_lock() 547 list_for_each_entry(ll, &list, link) { in torture_ww_mutex_lock() 555 list_for_each_entry_continue_reverse(ln, &list, link) in torture_ww_mutex_lock() 562 list_move(&ll->link, &list); in torture_ww_mutex_lock()
|
/kernel/bpf/preload/ |
D | bpf_preload_kern.c | 27 obj[0].link = maps_link; in preload() 29 obj[1].link = progs_link; in preload()
|
D | bpf_preload.h | 7 struct bpf_link *link; member
|
/kernel/sched/ |
D | topology.c | 1312 struct list_head link; member 1344 list_for_each_entry(entry, &asym_cap_list, link) { in asym_cpu_capacity_classify() 1370 list_for_each_entry(entry, &asym_cap_list, link) { in asym_cpu_capacity_update_data() 1379 list_add(&entry->link, &asym_cap_list); in asym_cpu_capacity_update_data() 1394 list_for_each_entry(entry, &asym_cap_list, link) in asym_cpu_capacity_scan() 1400 list_for_each_entry_safe(entry, next, &asym_cap_list, link) { in asym_cpu_capacity_scan() 1402 list_del(&entry->link); in asym_cpu_capacity_scan() 1412 entry = list_first_entry(&asym_cap_list, typeof(*entry), link); in asym_cpu_capacity_scan() 1413 list_del(&entry->link); in asym_cpu_capacity_scan()
|