Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'fix-verifier-test-failures-in-verbose-mode'

Gregory Bell says:

====================
Fix verifier test failures in verbose mode

This patch series fixes two issues that cause false failures in the
BPF verifier test suite when run with verbose output (`-v`).

The following tests fail only when running the test_verifier in
verbose.

This leads to inconsistent results across verbose and
non-verbose runs.

Patch 1 addresses an issue where the verbose flag (`-v`) unintentionally
overrides the `opts.log_level`, leading to incorrect contents when checking
bpf_vlog in tests with `expected_ret == VERBOSE_ACCEPT`. This occurs when
running verbose with `-v` but not `-vv`

Patch 2 increases the size of the `bpf_vlog[]` buffer to prevent truncation
of large verifier logs, which was causing failures in several scale and
64-bit immediate tests.

Before patches:
./test_verifier | grep FAIL
Summary: 790 PASSED, 0 SKIPPED, 0 FAILED

./test_verifier -v | grep FAIL
Summary: 782 PASSED, 0 SKIPPED, 8 FAILED

./test_verifier -vv | grep FAIL
Summary: 787 PASSED, 0 SKIPPED, 3 FAILED

After patches:
./test_verifier -v | grep FAIL
Summary: 790 PASSED, 0 SKIPPED, 0 FAILED
./test_verifier -vv | grep FAIL
Summary: 790 PASSED, 0 SKIPPED, 0 FAILED

These fixes improve test reliability and ensure consistent behavior across
verbose and non-verbose runs.
====================

Tested-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://patch.msgid.link/cover.1747058195.git.grbell@redhat.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>

+4 -4
+4 -4
tools/testing/selftests/bpf/test_verifier.c
··· 734 734 BTF_MEMBER_ENC(71, 13, 128), /* struct prog_test_member __kptr *ptr; */ 735 735 }; 736 736 737 - static char bpf_vlog[UINT_MAX >> 8]; 737 + static char bpf_vlog[UINT_MAX >> 5]; 738 738 739 739 static int load_btf_spec(__u32 *types, int types_len, 740 740 const char *strings, int strings_len) ··· 1559 1559 test->errstr_unpriv : test->errstr; 1560 1560 1561 1561 opts.expected_attach_type = test->expected_attach_type; 1562 - if (verbose) 1563 - opts.log_level = verif_log_level | 4; /* force stats */ 1564 - else if (expected_ret == VERBOSE_ACCEPT) 1562 + if (expected_ret == VERBOSE_ACCEPT) 1565 1563 opts.log_level = 2; 1564 + else if (verbose) 1565 + opts.log_level = verif_log_level | 4; /* force stats */ 1566 1566 else 1567 1567 opts.log_level = DEFAULT_LIBBPF_LOG_LEVEL; 1568 1568 opts.prog_flags = pflags;