selftests/bpf: test_verifier verbose causes erroneous failures
authorGregory Bell <grbell@redhat.com>
Mon, 12 May 2025 14:04:12 +0000 (10:04 -0400)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 12 May 2025 17:43:43 +0000 (10:43 -0700)
When running test_verifier with the -v flag and a test with
`expected_ret==VERBOSE_ACCEPT`, the opts.log_level is unintentionally
overwritten because the verbose flag takes precedence. This leads to
a mismatch in the expected and actual contents of bpf_vlog, causing
tests to fail incorrectly.

Reorder the conditional logic that sets opts.log_level to preserve
the expected log level and prevent it from being overridden by -v.

Signed-off-by: Gregory Bell <grbell@redhat.com>
Link: https://lore.kernel.org/r/182bf00474f817c99f968a9edb119882f62be0f8.1747058195.git.grbell@redhat.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/test_verifier.c

index 447b68509d7674922086459d1e1d814c212f4511..2d13e862b078876b4ece10e63f8d2d66a1dc4573 100644 (file)
@@ -1559,10 +1559,10 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
                       test->errstr_unpriv : test->errstr;
 
        opts.expected_attach_type = test->expected_attach_type;
-       if (verbose)
-               opts.log_level = verif_log_level | 4; /* force stats */
-       else if (expected_ret == VERBOSE_ACCEPT)
+       if (expected_ret == VERBOSE_ACCEPT)
                opts.log_level = 2;
+       else if (verbose)
+               opts.log_level = verif_log_level | 4; /* force stats */
        else
                opts.log_level = DEFAULT_LIBBPF_LOG_LEVEL;
        opts.prog_flags = pflags;