On Wed, Sep 10, 2014 at 2:03 AM, Daniel Borkmann <dborkman@xxxxxxxxxx> 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". -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html