linux/tools/testing
Eduard Zingerman 1a4607ffba bpf: consider that tail calls invalidate packet pointers
Tail-called programs could execute any of the helpers that invalidate
packet pointers. Hence, conservatively assume that each tail call
invalidates packet pointers.

Making the change in bpf_helper_changes_pkt_data() automatically makes
use of check_cfg() logic that computes 'changes_pkt_data' effect for
global sub-programs, such that the following program could be
rejected:

    int tail_call(struct __sk_buff *sk)
    {
    	bpf_tail_call_static(sk, &jmp_table, 0);
    	return 0;
    }

    SEC("tc")
    int not_safe(struct __sk_buff *sk)
    {
    	int *p = (void *)(long)sk->data;
    	... make p valid ...
    	tail_call(sk);
    	*p = 42; /* this is unsafe */
    	...
    }

The tc_bpf2bpf.c:subprog_tc() needs change: mark it as a function that
can invalidate packet pointers. Otherwise, it can't be freplaced with
tailcall_freplace.c:entry_freplace() that does a tail call.

Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20241210041100.1898468-8-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-12-10 10:24:57 -08:00
..
crypto/chacha20-s390
cxl module: Convert symbol namespace to string literal 2024-12-02 11:34:44 -08:00
fault-injection failcmd: make failcmd.sh executable 2024-09-01 20:43:32 -07:00
ktest ktest.pl: Avoid false positives with grub2 skip regex 2024-09-04 15:06:28 -04:00
kunit kunit: qemu_configs: loongarch: Enable shutdown 2024-11-19 15:26:30 -07:00
memblock memblock: updates for 6.12-rc1 2024-09-25 11:35:19 -07:00
nvdimm Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
radix-tree maple_tree: add some alloc node test case 2024-11-06 20:11:13 -08:00
scatterlist
selftests bpf: consider that tail calls invalidate packet pointers 2024-12-10 10:24:57 -08:00
shared - The series "resource: A couple of cleanups" from Andy Shevchenko 2024-11-25 16:09:48 -08:00
vma tools: testing: add additional vma_internal.h stubs 2024-11-06 20:11:19 -08:00
vsock vsock/test: verify socket options after setting them 2024-12-05 11:39:34 +01:00