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.