diff options
| author | Jakub Kicinski <[email protected]> | 2021-11-01 19:59:45 -0700 | 
|---|---|---|
| committer | Jakub Kicinski <[email protected]> | 2021-11-01 19:59:46 -0700 | 
| commit | b7b98f868987cd3e86c9bd9a6db048614933d7a0 (patch) | |
| tree | 8651e9d44726348ea56692d988b26c273e129c7a /tools/testing/selftests/bpf/prog_tests/skeleton.c | |
| parent | 52fa3ee0cce60a04739f4a5ca1c9d5c2a8ee1578 (diff) | |
| parent | 0b170456e0dda92b8925d40e217461fcc4e1efc9 (diff) | |
Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next
Alexei Starovoitov says:
====================
pull-request: bpf-next 2021-11-01
We've added 181 non-merge commits during the last 28 day(s) which contain
a total of 280 files changed, 11791 insertions(+), 5879 deletions(-).
The main changes are:
1) Fix bpf verifier propagation of 64-bit bounds, from Alexei.
2) Parallelize bpf test_progs, from Yucong and Andrii.
3) Deprecate various libbpf apis including af_xdp, from Andrii, Hengqi, Magnus.
4) Improve bpf selftests on s390, from Ilya.
5) bloomfilter bpf map type, from Joanne.
6) Big improvements to JIT tests especially on Mips, from Johan.
7) Support kernel module function calls from bpf, from Kumar.
8) Support typeless and weak ksym in light skeleton, from Kumar.
9) Disallow unprivileged bpf by default, from Pawan.
10) BTF_KIND_DECL_TAG support, from Yonghong.
11) Various bpftool cleanups, from Quentin.
* https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next: (181 commits)
  libbpf: Deprecate AF_XDP support
  kbuild: Unify options for BTF generation for vmlinux and modules
  selftests/bpf: Add a testcase for 64-bit bounds propagation issue.
  bpf: Fix propagation of signed bounds from 64-bit min/max into 32-bit.
  bpf: Fix propagation of bounds from 64-bit min/max into 32-bit and var_off.
  selftests/bpf: Fix also no-alu32 strobemeta selftest
  bpf: Add missing map_delete_elem method to bloom filter map
  selftests/bpf: Add bloom map success test for userspace calls
  bpf: Add alignment padding for "map_extra" + consolidate holes
  bpf: Bloom filter map naming fixups
  selftests/bpf: Add test cases for struct_ops prog
  bpf: Add dummy BPF STRUCT_OPS for test purpose
  bpf: Factor out helpers for ctx access checking
  bpf: Factor out a helper to prepare trampoline for struct_ops prog
  selftests, bpf: Fix broken riscv build
  riscv, libbpf: Add RISC-V (RV64) support to bpf_tracing.h
  tools, build: Add RISC-V to HOSTARCH parsing
  riscv, bpf: Increase the maximum number of iterations
  selftests, bpf: Add one test for sockmap with strparser
  selftests, bpf: Fix test_txmsg_ingress_parser error
  ...
====================
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
Diffstat (limited to 'tools/testing/selftests/bpf/prog_tests/skeleton.c')
| -rw-r--r-- | tools/testing/selftests/bpf/prog_tests/skeleton.c | 29 | 
1 files changed, 29 insertions, 0 deletions
| diff --git a/tools/testing/selftests/bpf/prog_tests/skeleton.c b/tools/testing/selftests/bpf/prog_tests/skeleton.c index fe1e204a65c6..180afd632f4c 100644 --- a/tools/testing/selftests/bpf/prog_tests/skeleton.c +++ b/tools/testing/selftests/bpf/prog_tests/skeleton.c @@ -16,10 +16,13 @@ void test_skeleton(void)  	struct test_skeleton* skel;  	struct test_skeleton__bss *bss;  	struct test_skeleton__data *data; +	struct test_skeleton__data_dyn *data_dyn;  	struct test_skeleton__rodata *rodata; +	struct test_skeleton__rodata_dyn *rodata_dyn;  	struct test_skeleton__kconfig *kcfg;  	const void *elf_bytes;  	size_t elf_bytes_sz = 0; +	int i;  	skel = test_skeleton__open();  	if (CHECK(!skel, "skel_open", "failed to open skeleton\n")) @@ -30,7 +33,12 @@ void test_skeleton(void)  	bss = skel->bss;  	data = skel->data; +	data_dyn = skel->data_dyn;  	rodata = skel->rodata; +	rodata_dyn = skel->rodata_dyn; + +	ASSERT_STREQ(bpf_map__name(skel->maps.rodata_dyn), ".rodata.dyn", "rodata_dyn_name"); +	ASSERT_STREQ(bpf_map__name(skel->maps.data_dyn), ".data.dyn", "data_dyn_name");  	/* validate values are pre-initialized correctly */  	CHECK(data->in1 != -1, "in1", "got %d != exp %d\n", data->in1, -1); @@ -46,6 +54,12 @@ void test_skeleton(void)  	CHECK(rodata->in.in6 != 0, "in6", "got %d != exp %d\n", rodata->in.in6, 0);  	CHECK(bss->out6 != 0, "out6", "got %d != exp %d\n", bss->out6, 0); +	ASSERT_EQ(rodata_dyn->in_dynarr_sz, 0, "in_dynarr_sz"); +	for (i = 0; i < 4; i++) +		ASSERT_EQ(rodata_dyn->in_dynarr[i], -(i + 1), "in_dynarr"); +	for (i = 0; i < 4; i++) +		ASSERT_EQ(data_dyn->out_dynarr[i], i + 1, "out_dynarr"); +  	/* validate we can pre-setup global variables, even in .bss */  	data->in1 = 10;  	data->in2 = 11; @@ -53,6 +67,10 @@ void test_skeleton(void)  	bss->in4 = 13;  	rodata->in.in6 = 14; +	rodata_dyn->in_dynarr_sz = 4; +	for (i = 0; i < 4; i++) +		rodata_dyn->in_dynarr[i] = i + 10; +  	err = test_skeleton__load(skel);  	if (CHECK(err, "skel_load", "failed to load skeleton: %d\n", err))  		goto cleanup; @@ -64,6 +82,10 @@ void test_skeleton(void)  	CHECK(bss->in4 != 13, "in4", "got %lld != exp %lld\n", bss->in4, 13LL);  	CHECK(rodata->in.in6 != 14, "in6", "got %d != exp %d\n", rodata->in.in6, 14); +	ASSERT_EQ(rodata_dyn->in_dynarr_sz, 4, "in_dynarr_sz"); +	for (i = 0; i < 4; i++) +		ASSERT_EQ(rodata_dyn->in_dynarr[i], i + 10, "in_dynarr"); +  	/* now set new values and attach to get them into outX variables */  	data->in1 = 1;  	data->in2 = 2; @@ -73,6 +95,8 @@ void test_skeleton(void)  	bss->in5.b = 6;  	kcfg = skel->kconfig; +	skel->data_read_mostly->read_mostly_var = 123; +  	err = test_skeleton__attach(skel);  	if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err))  		goto cleanup; @@ -93,6 +117,11 @@ void test_skeleton(void)  	CHECK(bss->kern_ver != kcfg->LINUX_KERNEL_VERSION, "ext2",  	      "got %d != exp %d\n", bss->kern_ver, kcfg->LINUX_KERNEL_VERSION); +	for (i = 0; i < 4; i++) +		ASSERT_EQ(data_dyn->out_dynarr[i], i + 10, "out_dynarr"); + +	ASSERT_EQ(skel->bss->out_mostly_var, 123, "out_mostly_var"); +  	elf_bytes = test_skeleton__elf_bytes(&elf_bytes_sz);  	ASSERT_OK_PTR(elf_bytes, "elf_bytes");  	ASSERT_GE(elf_bytes_sz, 0, "elf_bytes_sz"); |