• Andrii Nakryiko's avatar
    selftests/bpf: Add bpf_cookie selftests for high-level APIs · 0a80cf67
    Andrii Nakryiko authored
    Add selftest with few subtests testing proper bpf_cookie usage.
    
    Kprobe and uprobe subtests are pretty straightforward and just validate that
    the same BPF program attached with different bpf_cookie will be triggered with
    those different bpf_cookie values.
    
    Tracepoint subtest is a bit more interesting, as it is the only
    perf_event-based BPF hook that shares bpf_prog_array between multiple
    perf_events internally. This means that the same BPF program can't be attached
    to the same tracepoint multiple times. So we have 3 identical copies. This
    arrangement allows to test bpf_prog_array_copy()'s handling of bpf_prog_array
    list manipulation logic when programs are attached and detached.  The test
    validates that bpf_cookie isn't mixed up and isn't lost during such list
    manipulations.
    
    Perf_event subtest validates that two BPF links can be created against the
    same perf_event (but not at the same time, only one BPF program can be
    attached to perf_event itself), and that for each we can specify different
    bpf_cookie value.
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20210815070609.987780-15-andrii@kernel.org
    0a80cf67
test_bpf_cookie.c 1.58 KB