]> git.baikalelectronics.ru Git - kernel.git/commit
libbpf: Propagate EPERM to caller on program load
authorToke Høiland-Jørgensen <toke@redhat.com>
Sat, 9 Nov 2019 20:37:29 +0000 (21:37 +0100)
committerAlexei Starovoitov <ast@kernel.org>
Mon, 11 Nov 2019 03:26:30 +0000 (19:26 -0800)
commit3e05d494b4f9e12f166ef901ce212b417518324b
treee32447f1487caabdc5d90cc29c75cd16bf5cbf14
parent6ac877d4ad72b6ec7feb7f33188e8f16d3c231f6
libbpf: Propagate EPERM to caller on program load

When loading an eBPF program, libbpf overrides the return code for EPERM
errors instead of returning it to the caller. This makes it hard to figure
out what went wrong on load.

In particular, EPERM is returned when the system rlimit is too low to lock
the memory required for the BPF program. Previously, this was somewhat
obscured because the rlimit error would be hit on map creation (which does
return it correctly). However, since maps can now be reused, object load
can proceed all the way to loading programs without hitting the error;
propagating it even in this case makes it possible for the caller to react
appropriately (and, e.g., attempt to raise the rlimit before retrying).

Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Andrii Nakryiko <andriin@fb.com>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/157333184946.88376.11768171652794234561.stgit@toke.dk
tools/lib/bpf/libbpf.c