On Thu, Apr 27, 2017 at 01:15:42PM +0200, Jesper Dangaard Brouer wrote:
>
> To provoke this bug, remember that you MUST call:
>
> make headers_install
>
> In the kernels root directory, else you will be compiling samples/bpf/
> against the older headers previously installed.
>
> The error looks like:
>
> $ sudo ./sockex1
> bpf_load_program() err=22
> fd 0 is not pointing to valid bpf_map
> sockex1: [...]/samples/bpf/sockex1_user.c:26: main: Assertion
> `setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, prog_fd, sizeof(prog_fd[0])) ==
> 0' failed.
> Aborted
>
> I've found that the bug were introduced in
> commit: fb30d4b71214 ("bpf: Add tests for map-in-map")
Great debugging!
Indeed that change made samples/bpf/bpf_load.c to be incompatible with .o
generated earlier. We should really get rid of that loader and
switch to tools/lib/bpf/. I believe Eric Leblond already made it
resilient to 'struct bpf_map_def' changes.