[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <157314553801.693412.15522462897300280861.stgit@toke.dk>
Date: Thu, 07 Nov 2019 17:52:18 +0100
From: Toke Høiland-Jørgensen <toke@...hat.com>
To: Daniel Borkmann <daniel@...earbox.net>
Cc: Alexei Starovoitov <ast@...nel.org>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
Jesper Dangaard Brouer <brouer@...hat.com>,
Andrii Nakryiko <andrii.nakryiko@...il.com>,
David Miller <davem@...emloft.net>, netdev@...r.kernel.org,
bpf@...r.kernel.org
Subject: [PATCH bpf-next 0/6] libbpf: Fix pinning and error message bugs and
add new getters
This series fixes a few bugs in libbpf that I discovered while playing around
with the new auto-pinning code, and writing the first utility in xdp-tools[0]:
- If object loading fails, libbpf does not clean up the pinnings created by the
auto-pinning mechanism.
- EPERM is not propagated to the caller on program load
- Netlink functions write error messages directly to stderr
In addition, libbpf currently only has a somewhat limited getter function for
XDP link info, which makes it impossible to discover whether an attached program
is in SKB mode or not. So the last patch in the series adds a new getter for XDP
link info which returns all the information returned via netlink (and which can
be extended later).
Finally, add a getter for BPF program size, which can be used by the caller to
estimate the amount of locked memory needed to load a program.
A selftest is added for the pinning change, while the other features were tested
in the xdp-filter tool from the xdp-tools repo. The 'new-libbpf-features' branch
contains the commits that make use of the new XDP getter and the corrected EPERM
error code.
[0] https://github.com/xdp-project/xdp-tools
---
Toke Høiland-Jørgensen (6):
libbpf: Unpin auto-pinned maps if loading fails
selftests/bpf: Add tests for automatic map unpinning on load failure
libbpf: Propagate EPERM to caller on program load
libbpf: Use pr_warn() when printing netlink errors
libbpf: Add bpf_get_link_xdp_info() function to get more XDP information
libbpf: Add getter for program size
tools/lib/bpf/libbpf.c | 25 +++++--
tools/lib/bpf/libbpf.h | 11 +++
tools/lib/bpf/libbpf.map | 2 +
tools/lib/bpf/netlink.c | 81 ++++++++++++++--------
tools/lib/bpf/nlattr.c | 10 +--
tools/testing/selftests/bpf/prog_tests/pinning.c | 20 +++++
tools/testing/selftests/bpf/progs/test_pinning.c | 2 -
7 files changed, 109 insertions(+), 42 deletions(-)
Powered by blists - more mailing lists