| /linux/tools/testing/selftests/bpf/progs/ |
| H A D | user_ringbuf_fail.c | 30 bad_access1(struct bpf_dynptr *dynptr, void *context) in bad_access1() argument 34 sample = bpf_dynptr_data(dynptr - 1, 0, sizeof(*sample)); in bad_access1() 35 bpf_printk("Was able to pass bad pointer %lx\n", (__u64)dynptr - 1); in bad_access1() 40 /* A callback that accesses a dynptr in a bpf_user_ringbuf_drain callback should 53 bad_access2(struct bpf_dynptr *dynptr, void *context) in bad_access2() argument 57 sample = bpf_dynptr_data(dynptr + 1, 0, sizeof(*sample)); in bad_access2() 58 bpf_printk("Was able to pass bad pointer %lx\n", (__u64)dynptr + 1); in bad_access2() 63 /* A callback that accesses a dynptr in a bpf_user_ringbuf_drain callback should 76 write_forbidden(struct bpf_dynptr *dynptr, void *context) in write_forbidden() argument 78 *((long *)dynptr) in write_forbidden() 96 null_context_write(struct bpf_dynptr * dynptr,void * context) null_context_write() argument 116 null_context_read(struct bpf_dynptr * dynptr,void * context) null_context_read() argument 138 try_discard_dynptr(struct bpf_dynptr * dynptr,void * context) try_discard_dynptr() argument 158 try_submit_dynptr(struct bpf_dynptr * dynptr,void * context) try_submit_dynptr() argument 178 invalid_drain_callback_return(struct bpf_dynptr * dynptr,void * context) invalid_drain_callback_return() argument 196 try_reinit_dynptr_mem(struct bpf_dynptr * dynptr,void * context) try_reinit_dynptr_mem() argument 203 try_reinit_dynptr_ringbuf(struct bpf_dynptr * dynptr,void * context) try_reinit_dynptr_ringbuf() argument 225 global_call_bpf_dynptr_data(struct bpf_dynptr * dynptr) global_call_bpf_dynptr_data() argument 231 callback_adjust_bpf_dynptr_reg_off(struct bpf_dynptr * dynptr,void * ctx) callback_adjust_bpf_dynptr_reg_off() argument [all...] |
| H A D | test_cls_redirect_dynptr.c | 125 static int pkt_parse_ipv4(struct bpf_dynptr *dynptr, __u64 *offset, struct iphdr *iphdr) in pkt_parse_ipv4() argument 127 if (bpf_dynptr_read(iphdr, sizeof(*iphdr), dynptr, *offset, 0)) in pkt_parse_ipv4() 142 static bool pkt_parse_icmp_l4_ports(struct bpf_dynptr *dynptr, __u64 *offset, flow_ports_t *ports) in pkt_parse_icmp_l4_ports() argument 144 if (bpf_dynptr_read(ports, sizeof(*ports), dynptr, *offset, 0)) in pkt_parse_icmp_l4_ports() 187 static bool pkt_skip_ipv6_extension_headers(struct bpf_dynptr *dynptr, __u64 *offset, in pkt_skip_ipv6_extension_headers() argument 215 if (bpf_dynptr_read(&exthdr, sizeof(exthdr), dynptr, *offset, 0)) in pkt_skip_ipv6_extension_headers() 244 static int pkt_parse_ipv6(struct bpf_dynptr *dynptr, __u64 *offset, struct ipv6hdr *ipv6, in pkt_parse_ipv6() argument 247 if (bpf_dynptr_read(ipv6, sizeof(*ipv6), dynptr, *offset, 0)) in pkt_parse_ipv6() 252 if (!pkt_skip_ipv6_extension_headers(dynptr, offset, ipv6, proto, is_fragment)) in pkt_parse_ipv6() 293 static ret_t forward_with_gre(struct __sk_buff *skb, struct bpf_dynptr *dynptr, in forward_with_gre() argument 420 forward_to_next_hop(struct __sk_buff * skb,struct bpf_dynptr * dynptr,encap_headers_t * encap,struct in_addr * next_hop,metrics_t * metrics) forward_to_next_hop() argument 477 get_next_hop(struct bpf_dynptr * dynptr,__u64 * offset,encap_headers_t * encap,struct in_addr * next_hop) get_next_hop() argument 605 process_icmpv4(struct __sk_buff * skb,struct bpf_dynptr * dynptr,__u64 * offset,metrics_t * metrics) process_icmpv4() argument 654 process_icmpv6(struct bpf_dynptr * dynptr,__u64 * offset,struct __sk_buff * skb,metrics_t * metrics) process_icmpv6() argument 706 process_tcp(struct bpf_dynptr * dynptr,__u64 * offset,struct __sk_buff * skb,struct iphdr_info * info,metrics_t * metrics) process_tcp() argument 729 process_udp(struct bpf_dynptr * dynptr,__u64 * offset,struct __sk_buff * skb,struct iphdr_info * info,metrics_t * metrics) process_udp() argument 748 process_ipv4(struct __sk_buff * skb,struct bpf_dynptr * dynptr,__u64 * offset,metrics_t * metrics) process_ipv4() argument 790 process_ipv6(struct __sk_buff * skb,struct bpf_dynptr * dynptr,__u64 * offset,metrics_t * metrics) process_ipv6() argument 838 struct bpf_dynptr dynptr; cls_redirect() local [all...] |
| H A D | user_ringbuf_success.c | 38 record_sample(struct bpf_dynptr *dynptr, void *context) in record_sample() argument 46 status = bpf_dynptr_read(&stack_sample, sizeof(stack_sample), dynptr, 0, 0); in record_sample() 53 sample = bpf_dynptr_data(dynptr, 0, sizeof(*sample)); in record_sample() 89 read_protocol_msg(struct bpf_dynptr *dynptr, void *context) in read_protocol_msg() argument 93 msg = bpf_dynptr_data(dynptr, 0, sizeof(*msg)); in read_protocol_msg() 193 do_nothing_cb(struct bpf_dynptr *dynptr, void *context) in do_nothing_cb() argument
|
| H A D | verifier_iterating_callbacks.c | 134 static __u64 ringbuf_drain_cb(struct bpf_dynptr *dynptr, void *data) in ringbuf_drain_cb() argument
|
| H A D | dynptr_fail.c | 2047 __noinline long global_call_bpf_dynptr(const struct bpf_dynptr *dynptr) in global_call_bpf_dynptr() argument
|
| /linux/kernel/bpf/ |
| H A D | ringbuf.c | 839 struct bpf_dynptr_kern dynptr; in BPF_CALL_4() local 854 bpf_dynptr_init(&dynptr, sample, BPF_DYNPTR_TYPE_LOCAL, 0, size); in BPF_CALL_4() 855 ret = callback((uintptr_t)&dynptr, (uintptr_t)callback_ctx, 0, 0, 0); in BPF_CALL_4()
|
| H A D | states.c | 800 if (old_reg->dynptr.type != cur_reg->dynptr.type || in stacksafe() 801 old_reg->dynptr.first_slot != cur_reg->dynptr.first_slot || in stacksafe()
|
| H A D | log.c | 681 verbose_a("type=%s", dynptr_type_str(reg->dynptr.type)); in print_reg_state() 757 verbose(env, "=dynptr_%s(", dynptr_type_str(reg->dynptr.type)); in print_verifier_state()
|
| H A D | verifier.c | 664 struct ref_obj_desc *ref_obj, struct bpf_dynptr_desc *dynptr) in mark_stack_slots_dynptr() argument 699 if (dynptr->type == BPF_DYNPTR_TYPE_INVALID) { /* dynptr constructors */ in mark_stack_slots_dynptr() 722 parent_id = dynptr->parent_id; in mark_stack_slots_dynptr() 759 return release_reference(env, dynptr_type_referenced(reg->dynptr.type) in unmark_stack_slots_dynptr() 785 if (!stack->spilled_ptr.dynptr.first_slot) in dynptr_ref_cnt() 808 if (!state->stack[spi].spilled_ptr.dynptr.first_slot) in destroy_if_dynptr_stack_slot() 816 if (dynptr_type_referenced(state->stack[spi].spilled_ptr.dynptr.type) && in destroy_if_dynptr_stack_slot() 881 if (!state->stack[spi].spilled_ptr.dynptr.first_slot) in is_dynptr_reg_valid_init() 899 return reg->dynptr.type; in dynptr_reg_type() 905 return state->stack[spi].spilled_ptr.dynptr.type; in dynptr_reg_type() [all …]
|
| H A D | helpers.c | 4713 __bpf_kfunc int bpf_dynptr_file_discard(struct bpf_dynptr *dynptr) in bpf_dynptr_file_discard() argument 4715 struct bpf_dynptr_kern *ptr = (struct bpf_dynptr_kern *)dynptr; in bpf_dynptr_file_discard()
|
| /linux/include/linux/ |
| H A D | bpf_verifier.h | 81 } dynptr; member 1547 struct bpf_dynptr_desc dynptr; member
|
| /linux/Documentation/bpf/ |
| H A D | kfuncs.rst | 177 Here, the dynptr will be treated as an uninitialized dynptr. Without this 178 annotation, the verifier will reject the program if the dynptr passed in is
|