Home
last modified time | relevance | path

Searched refs:dynptr (Results 1 - 7 of 7) sorted by relevance

/kernel/linux/linux-6.6/tools/testing/selftests/bpf/progs/
H A Duser_ringbuf_fail.c30 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
[all...]
H A Dtest_cls_redirect_dynptr.c123 static int pkt_parse_ipv4(struct bpf_dynptr *dynptr, __u64 *offset, struct iphdr *iphdr) in pkt_parse_ipv4() argument
125 if (bpf_dynptr_read(iphdr, sizeof(*iphdr), dynptr, *offset, 0)) in pkt_parse_ipv4()
140 static bool pkt_parse_icmp_l4_ports(struct bpf_dynptr *dynptr, __u64 *offset, flow_ports_t *ports) in pkt_parse_icmp_l4_ports() argument
142 if (bpf_dynptr_read(ports, sizeof(*ports), dynptr, *offset, 0)) in pkt_parse_icmp_l4_ports()
185 static bool pkt_skip_ipv6_extension_headers(struct bpf_dynptr *dynptr, __u64 *offset, in pkt_skip_ipv6_extension_headers() argument
213 if (bpf_dynptr_read(&exthdr, sizeof(exthdr), dynptr, *offset, 0)) in pkt_skip_ipv6_extension_headers()
242 static int pkt_parse_ipv6(struct bpf_dynptr *dynptr, __u64 *offset, struct ipv6hdr *ipv6, in pkt_parse_ipv6() argument
245 if (bpf_dynptr_read(ipv6, sizeof(*ipv6), dynptr, *offset, 0)) in pkt_parse_ipv6()
250 if (!pkt_skip_ipv6_extension_headers(dynptr, offset, ipv6, proto, is_fragment)) in pkt_parse_ipv6()
291 static ret_t forward_with_gre(struct __sk_buff *skb, struct bpf_dynptr *dynptr, in forward_with_gre() argument
418 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
475 get_next_hop(struct bpf_dynptr *dynptr, __u64 *offset, encap_headers_t *encap, struct in_addr *next_hop) get_next_hop() argument
603 process_icmpv4(struct __sk_buff *skb, struct bpf_dynptr *dynptr, __u64 *offset, metrics_t *metrics) process_icmpv4() argument
652 process_icmpv6(struct bpf_dynptr *dynptr, __u64 *offset, struct __sk_buff *skb, metrics_t *metrics) process_icmpv6() argument
704 process_tcp(struct bpf_dynptr *dynptr, __u64 *offset, struct __sk_buff *skb, struct iphdr_info *info, metrics_t *metrics) process_tcp() argument
727 process_udp(struct bpf_dynptr *dynptr, __u64 *offset, struct __sk_buff *skb, struct iphdr_info *info, metrics_t *metrics) process_udp() argument
746 process_ipv4(struct __sk_buff *skb, struct bpf_dynptr *dynptr, __u64 *offset, metrics_t *metrics) process_ipv4() argument
788 process_ipv6(struct __sk_buff *skb, struct bpf_dynptr *dynptr, __u64 *offset, metrics_t *metrics) process_ipv6() argument
836 struct bpf_dynptr dynptr; cls_redirect() local
[all...]
H A Duser_ringbuf_success.c38 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 Dverifier_iterating_callbacks.c136 static __u64 ringbuf_drain_cb(struct bpf_dynptr *dynptr, void *data) in ringbuf_drain_cb() argument
/kernel/linux/linux-6.6/kernel/bpf/
H A Dringbuf.c748 struct bpf_dynptr_kern dynptr; in BPF_CALL_4() local
763 bpf_dynptr_init(&dynptr, sample, BPF_DYNPTR_TYPE_LOCAL, 0, size); in BPF_CALL_4()
764 ret = callback((uintptr_t)&dynptr, (uintptr_t)callback_ctx, 0, 0, 0); in BPF_CALL_4()
H A Dverifier.c699 * Please note that the spi grows downwards. For example, a dynptr in is_spi_bounds_valid()
735 return stack_slot_obj_get_spi(env, reg, "dynptr", BPF_DYNPTR_NR_SLOTS); in dynptr_get_spi()
762 WARN_ONCE(1, "unknown dynptr type %d\n", type); in dynptr_type_str()
905 /* We cannot assume both spi and spi - 1 belong to the same dynptr, in mark_stack_slots_dynptr()
911 * case they do belong to same dynptr, second call won't see slot_type in mark_stack_slots_dynptr()
1001 if (!dynptr_type_refcounted(state->stack[spi].spilled_ptr.dynptr.type)) { in unmark_stack_slots_dynptr()
1008 /* If the dynptr has a ref_obj_id, then we need to invalidate in unmark_stack_slots_dynptr()
1012 * 2) Any slices derived from this dynptr. in unmark_stack_slots_dynptr()
1015 /* Invalidate any slices associated with this dynptr */ in unmark_stack_slots_dynptr()
1018 /* Invalidate any dynptr clone in unmark_stack_slots_dynptr()
[all...]
/kernel/linux/linux-6.6/include/linux/
H A Dbpf_verifier.h102 u32 dynptr_id; /* for dynptr slices */
105 /* For dynptr stack slots */
108 /* A dynptr is 16 bytes so it takes up 2 stack slots.
112 * dynptr.
115 } dynptr; member
166 * the dynptr to determine proper reference freeing.
235 /* A dynptr is stored in this stack slot. The type of dynptr
236 * is stored in bpf_stack_state->spilled_ptr.dynptr.type

Completed in 16 milliseconds