[Impact]
Upstream v5.15.139 (#lp2049432) brought commit "selftests/bpf: Test tail call counting with bpf2bpf and data on stack" that affects one of the bpf kselftests.
because LIBBPF_OPTS macro does not exists, it does not compile. Error below.
[Fix]
Cherry-pick commit "libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS"
[Test]
This should be solved soon, but compileselftests debian rule does not compile bpf selftests.
I tested it by using our regression testing tooling, but same results can be achieved by running:
$ make -C linux/tools/testing/selftests TARGETS=bpf SKIP_TARGETS= clean all KDIR=/usr/src/linux-headers-5.15.0-<verson>-generic
from the linux tree directory
Without the fix, it fails to compile:
/root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c: In function ‘test_tailcall_bpf2bpf_6’:
/root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:9: warning: implicit declaration of function ‘LIBBPF_OPTS’; did you mean ‘LIBBPF_API’? [-Wimplicit-function-declaration]
822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
| ^~~~~~~~~~~
| LIBBPF_API
/root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: error: ‘bpf_test_run_opts’ undeclared (first use in this function)
822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
| ^~~~~~~~~~~~~~~~~
/root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:21: note: each undeclared identifier is reported only once for each function it appears in
/root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:822:40: error: ‘topts’ undeclared (first use in this function)
822 | LIBBPF_OPTS(bpf_test_run_opts, topts,
| ^~~~~
/root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/prog_tests/tailcalls.c:823:17: error: expected expression before ‘.’ token
823 | .data_in = &pkt_v4,
| ^
make[1]: *** [Makefile:471: /root/autotest/client/tmp/ubuntu_bpf/src/linux/tools/testing/selftests/bpf/tailcalls.test.o] Error 1
make: *** [Makefile:172: all] Error 2
Sru justification
[Impact]
Upstream v5.15.139 (#lp2049432) brought commit "selftests/bpf: Test tail call counting with bpf2bpf and data on stack" that affects one of the bpf kselftests.
because LIBBPF_OPTS macro does not exists, it does not compile. Error below.
[Fix]
Cherry-pick commit "libbpf: Rename DECLARE_LIBBPF_OPTS into LIBBPF_OPTS"
[Test] testing/ selftests TARGETS=bpf SKIP_TARGETS= clean all KDIR=/usr/ src/linux- headers- 5.15.0- <verson> -generic
This should be solved soon, but compileselftests debian rule does not compile bpf selftests.
I tested it by using our regression testing tooling, but same results can be achieved by running:
$ make -C linux/tools/
from the linux tree directory
Without the fix, it fails to compile: autotest/ client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/prog_ tests/tailcalls .c: In function ‘test_tailcall_ bpf2bpf_ 6’: autotest/ client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/prog_ tests/tailcalls .c:822: 9: warning: implicit declaration of function ‘LIBBPF_OPTS’; did you mean ‘LIBBPF_API’? [-Wimplicit- function- declaration] OPTS(bpf_ test_run_ opts, topts, autotest/ client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/prog_ tests/tailcalls .c:822: 21: error: ‘bpf_test_run_opts’ undeclared (first use in this function) OPTS(bpf_ test_run_ opts, topts, autotest/ client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/prog_ tests/tailcalls .c:822: 21: note: each undeclared identifier is reported only once for each function it appears in autotest/ client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/prog_ tests/tailcalls .c:822: 40: error: ‘topts’ undeclared (first use in this function) OPTS(bpf_ test_run_ opts, topts, autotest/ client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/prog_ tests/tailcalls .c:823: 17: error: expected expression before ‘.’ token client/ tmp/ubuntu_ bpf/src/ linux/tools/ testing/ selftests/ bpf/tailcalls. test.o] Error 1
/root/
/root/
822 | LIBBPF_
| ^~~~~~~~~~~
| LIBBPF_API
/root/
822 | LIBBPF_
| ^~~~~~~~~~~~~~~~~
/root/
/root/
822 | LIBBPF_
| ^~~~~
/root/
823 | .data_in = &pkt_v4,
| ^
make[1]: *** [Makefile:471: /root/autotest/
make: *** [Makefile:172: all] Error 2
With the fix, it compiles.