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

bpf: allow to specify log level and reduce it for test_verifier

For the test_verifier case, it's quite hard to parse log level 2 to
figure out what's causing an issue when used to log level 1. We do
want to use bpf_verify_program() in order to simulate some of the
tests with strict alignment. So just add an argument to pass the level
and put it to 1 for test_verifier.

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Daniel Borkmann and committed by
David S. Miller
d6554904 4cabc5b1

+5 -5
+2 -2
tools/lib/bpf/bpf.c
··· 120 120 int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns, 121 121 size_t insns_cnt, int strict_alignment, 122 122 const char *license, __u32 kern_version, 123 - char *log_buf, size_t log_buf_sz) 123 + char *log_buf, size_t log_buf_sz, int log_level) 124 124 { 125 125 union bpf_attr attr; 126 126 ··· 131 131 attr.license = ptr_to_u64(license); 132 132 attr.log_buf = ptr_to_u64(log_buf); 133 133 attr.log_size = log_buf_sz; 134 - attr.log_level = 2; 134 + attr.log_level = log_level; 135 135 log_buf[0] = 0; 136 136 attr.kern_version = kern_version; 137 137 attr.prog_flags = strict_alignment ? BPF_F_STRICT_ALIGNMENT : 0;
+1 -1
tools/lib/bpf/bpf.h
··· 38 38 int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns, 39 39 size_t insns_cnt, int strict_alignment, 40 40 const char *license, __u32 kern_version, 41 - char *log_buf, size_t log_buf_sz); 41 + char *log_buf, size_t log_buf_sz, int log_level); 42 42 43 43 int bpf_map_update_elem(int fd, const void *key, const void *value, 44 44 __u64 flags);
+1 -1
tools/testing/selftests/bpf/test_align.c
··· 380 380 prog_len = probe_filter_length(prog); 381 381 fd_prog = bpf_verify_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER, 382 382 prog, prog_len, 1, "GPL", 0, 383 - bpf_vlog, sizeof(bpf_vlog)); 383 + bpf_vlog, sizeof(bpf_vlog), 2); 384 384 if (fd_prog < 0) { 385 385 printf("Failed to load program.\n"); 386 386 printf("%s", bpf_vlog);
+1 -1
tools/testing/selftests/bpf/test_verifier.c
··· 5633 5633 5634 5634 fd_prog = bpf_verify_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER, 5635 5635 prog, prog_len, test->flags & F_LOAD_WITH_STRICT_ALIGNMENT, 5636 - "GPL", 0, bpf_vlog, sizeof(bpf_vlog)); 5636 + "GPL", 0, bpf_vlog, sizeof(bpf_vlog), 1); 5637 5637 5638 5638 expected_ret = unpriv && test->result_unpriv != UNDEF ? 5639 5639 test->result_unpriv : test->result;