samples/bpf: bpf_load.c detect and abort if ELF maps section size is wrong
authorJesper Dangaard Brouer <brouer@redhat.com>
Fri, 28 Apr 2017 14:25:04 +0000 (16:25 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 1 May 2017 02:41:59 +0000 (22:41 -0400)
commit5010e948420ea1cff85f6c2f64ec7a011aea3d07
tree7f41790ce6992a94fa9ce45809ae8f0796484feb
parent39f37095990a39a0ee24f7621d06e9a6da6cd815
samples/bpf: bpf_load.c detect and abort if ELF maps section size is wrong

The struct bpf_map_def was extended in commit fb30d4b71214 ("bpf: Add tests
for map-in-map") with member unsigned int inner_map_idx.  This changed the size
of the maps section in the generated ELF _kern.o files.

Unfortunately the loader in bpf_load.c does not detect or handle this.  Thus,
older _kern.o files became incompatible, and caused hard-to-debug errors
where the syscall validation rejected BPF_MAP_CREATE request.

This patch only detect the situation and aborts load_bpf_file(). It also
add code comments warning people that read this loader for inspiration
for these pitfalls.

Fixes: fb30d4b71214 ("bpf: Add tests for map-in-map")
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
samples/bpf/bpf_load.c