Messages in this thread | | | Date | Wed, 10 Sep 2014 10:32:40 -0700 | Subject | Re: [PATCH v11 net-next 00/12] eBPF syscall, verifier, testsuite | From | Alexei Starovoitov <> |
| |
On Wed, Sep 10, 2014 at 2:03 AM, Daniel Borkmann <dborkman@redhat.com> wrote: >> 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".
| |