Allow users to attach a 64-bits cookie to a BPF program when link it to fentry, fexit, or fmod_ret of a function. This changeset includes several major changes. - Add a new field bpf_cookie to struct raw_tracepoint, so that a user can attach a cookie to a program. - Store flags in trampoline frames to provide the flexibility of storing more values in these frames. - Store the program ID of the current BPF program in the trampoline frame. - The implmentation of bpf_get_attach_cookie() for tracing programs to read the attached cookie. Kui-Feng Lee (5): bpf: Add a flags value on trampoline frames. bpf: Detect if a program needs its program ID. bpf, x86: Store program ID to trampoline frames. bpf: Attach a cookie to a BPF program. bpf: Implement bpf_get_attach_cookie() for tracing programs. arch/x86/net/bpf_jit_comp.c | 53 ++++++++++++++--- include/linux/bpf.h | 3 + include/linux/filter.h | 3 +- include/uapi/linux/bpf.h | 1 + kernel/bpf/syscall.c | 12 ++-- kernel/bpf/trampoline.c | 10 +++- kernel/bpf/verifier.c | 5 +- kernel/trace/bpf_trace.c | 45 ++++++++++++++- tools/include/uapi/linux/bpf.h | 1 + tools/lib/bpf/bpf.c | 14 +++++ tools/lib/bpf/bpf.h | 1 + tools/lib/bpf/libbpf.map | 1 + .../selftests/bpf/prog_tests/bpf_cookie.c | 57 +++++++++++++++++++ .../selftests/bpf/progs/test_bpf_cookie.c | 24 ++++++++ 14 files changed, 211 insertions(+), 19 deletions(-) -- 2.30.2