This is a follow-up for threads [1] and [2]: - The size of the bpf_verifier_state->idmap_scratch array is reduced but remains sufficient for any valid BPF program. - selftests/bpf test_loader is updated to allow specifying that program requires BPF_F_TEST_STATE_FREQ flag. - Test case for the verifier.c:check_ids() update uses test_loader and is meant as an example of using it for test_verifier-kind tests. The combination of test_loader and naked functions (see [3]) with inline assembly allows to write verifier tests easier than it is done currently with BPF_RAW_INSN-series macros. One can follow the steps below to add new tests of such kind: - add a topic file under bpf/progs/ directory; - define test programs using naked functions and inline assembly: #include <linux/bpf.h> #include "bpf_misc.h" SEC(...) __naked int foo_test(void) { asm volatile( "r0 = 0;" "exit;" ::: __clobber_all); } - add skeleton and runner functions in prog_tests/verifier.c: #include "topic.skel.h" TEST_SET(topic) After these steps the test_progs binary would include the topic tests. Topic tests could be selectively executed using the following command: $ ./test_progs -vvv -a topic These changes are suggested by Andrii Nakryiko. [1] https://lore.kernel.org/bpf/CAEf4BzYN1JmY9t03pnCHc4actob80wkBz2vk90ihJCBzi8CT9w@xxxxxxxxxxxxxx/ [2] https://lore.kernel.org/bpf/CAEf4BzYPsDWdRgx+ND1wiKAB62P=WwoLhr2uWkbVpQfbHqi1oA@xxxxxxxxxxxxxx/ [3] https://gcc.gnu.org/onlinedocs/gcc/Basic-Asm.html#Basic-Asm Eduard Zingerman (4): selftests/bpf: support for BPF_F_TEST_STATE_FREQ in test_loader selftests/bpf: convenience macro for use with 'asm volatile' blocks bpf: reduce BPF_ID_MAP_SIZE to fit only valid programs selftests/bpf: check if verifier.c:check_ids() handles 64+5 ids include/linux/bpf_verifier.h | 4 +- kernel/bpf/verifier.c | 6 +- .../selftests/bpf/prog_tests/verifier.c | 12 +++ tools/testing/selftests/bpf/progs/bpf_misc.h | 7 ++ .../selftests/bpf/progs/check_ids_limits.c | 77 +++++++++++++++++++ tools/testing/selftests/bpf/test_loader.c | 10 +++ 6 files changed, 112 insertions(+), 4 deletions(-) create mode 100644 tools/testing/selftests/bpf/prog_tests/verifier.c create mode 100644 tools/testing/selftests/bpf/progs/check_ids_limits.c -- 2.38.2