mbox series

[bpf-next,v2,0/4] bpftool: Fix skeletons compilation for older kernels

Message ID 20230707095425.168126-1-quentin@isovalent.com (mailing list archive)
Headers show
Series bpftool: Fix skeletons compilation for older kernels | expand

Message

Quentin Monnet July 7, 2023, 9:54 a.m. UTC
At runtime, bpftool may run its own BPF programs to get the pids of
processes referencing BPF programs, or to profile programs. The skeletons
for these programs rely on a vmlinux.h header and may fail to compile when
building bpftool on hosts running older kernels, where some structs or
enums are not defined. In this set, we address this issue by using local
definitions for struct perf_event, struct bpf_perf_link,
BPF_LINK_TYPE_PERF_EVENT (pids.bpf.c) and struct bpf_perf_event_value
(profiler.bpf.c).

This set contains patches 1 to 3 from Alexander Lobakin's series, "bpf:
random unpopular userspace fixes (32 bit et al)" (v2) [0], from April 2022.
An additional patch defines a local version of BPF_LINK_TYPE_PERF_EVENT in
bpftool's pids.bpf.c.

[0] https://lore.kernel.org/bpf/20220421003152.339542-1-alobakin@pm.me/

v2: Fixed description (CO-RE for container_of()) in patch 2.

Cc: Alexander Lobakin <aleksander.lobakin@intel.com>
Cc: Michal Suchánek <msuchanek@suse.de>

Alexander Lobakin (3):
  bpftool: use a local copy of perf_event to fix accessing ::bpf_cookie
  bpftool: define a local bpf_perf_link to fix accessing its fields
  bpftool: use a local bpf_perf_event_value to fix accessing its fields

Quentin Monnet (1):
  bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in
    pid_iter.bpf.c

 tools/bpf/bpftool/skeleton/pid_iter.bpf.c | 26 +++++++++++++++++-----
 tools/bpf/bpftool/skeleton/profiler.bpf.c | 27 ++++++++++++++---------
 2 files changed, 38 insertions(+), 15 deletions(-)

Comments

patchwork-bot+netdevbpf@kernel.org July 10, 2023, 10:40 p.m. UTC | #1
Hello:

This series was applied to bpf/bpf-next.git (master)
by Andrii Nakryiko <andrii@kernel.org>:

On Fri,  7 Jul 2023 10:54:21 +0100 you wrote:
> At runtime, bpftool may run its own BPF programs to get the pids of
> processes referencing BPF programs, or to profile programs. The skeletons
> for these programs rely on a vmlinux.h header and may fail to compile when
> building bpftool on hosts running older kernels, where some structs or
> enums are not defined. In this set, we address this issue by using local
> definitions for struct perf_event, struct bpf_perf_link,
> BPF_LINK_TYPE_PERF_EVENT (pids.bpf.c) and struct bpf_perf_event_value
> (profiler.bpf.c).
> 
> [...]

Here is the summary with links:
  - [bpf-next,v2,1/4] bpftool: use a local copy of perf_event to fix accessing ::bpf_cookie
    https://git.kernel.org/bpf/bpf-next/c/4cbeeb0dc02f
  - [bpf-next,v2,2/4] bpftool: define a local bpf_perf_link to fix accessing its fields
    https://git.kernel.org/bpf/bpf-next/c/67a43462ee24
  - [bpf-next,v2,3/4] bpftool: Use a local copy of BPF_LINK_TYPE_PERF_EVENT in pid_iter.bpf.c
    https://git.kernel.org/bpf/bpf-next/c/44ba7b30e84f
  - [bpf-next,v2,4/4] bpftool: use a local bpf_perf_event_value to fix accessing its fields
    https://git.kernel.org/bpf/bpf-next/c/658ac0680131

You are awesome, thank you!