Re: [PATCH v11 net-next 00/12] eBPF syscall, verifier, testsuite
From: Alexei Starovoitov <hidden>
Date: 2014-09-10 17:32:44
Also in:
lkml, netdev
On Wed, Sep 10, 2014 at 2:03 AM, Daniel Borkmann [off-list ref] wrote:
quoted
struct { /* anonymous struct used by BPF_PROG_LOAD command */ enum bpf_prog_type prog_type; __u32 insn_cnt; const struct bpf_insn *insns; const char *license; __u32 log_level; /* verbosity level of eBPF verifier */ __u32 log_size; /* size of user buffer */ void *log_buf; /* user supplied buffer */What is log buffer? Would that mean the verifier will return an error string if the program will not pass it, or if not, what other data? I think the man page is missing how to examine the returned verifier log buffer data.
yes. it's an error log (as text string for humans) from verifier.
It is briefly explained in the man page:
EACCES For BPF_PROG_LOAD, though program has valid instructions, it was
rejected, since it was deemed unsafe (may access disallowed mem-
ory region or uninitialized stack/register or function con-
straints don't match actual types or misaligned access). In such
case it is recommended to call bpf() again with log_level = 1
and examine log_buf for specific reason provided by verifier.
and there is a whole section about it in
Documentation/networking/filter.txt
called "Understanding eBPF verifier messages".