• Andrii Nakryiko's avatar
    libbpf: Refactor and simplify legacy kprobe code · 46ed5fc3
    Andrii Nakryiko authored
    Refactor legacy kprobe handling code to follow the same logic as uprobe
    legacy logic added in the next patchs:
      - add append_to_file() helper that makes it simpler to work with
        tracefs file-based interface for creating and deleting probes;
      - move out probe/event name generation outside of the code that
        adds/removes it, which simplifies bookkeeping significantly;
      - change the probe name format to start with "libbpf_" prefix and
        include offset within kernel function;
      - switch 'unsigned long' to 'size_t' for specifying kprobe offsets,
        which is consistent with how uprobes define that, simplifies
        printf()-ing internally, and also avoids unnecessary complications on
        architectures where sizeof(long) != sizeof(void *).
    
    This patch also implicitly fixes the problem with invalid open() error
    handling present in poke_kprobe_events(), which (the function) this
    patch removes.
    
    Fixes: ca304b40 ("libbpf: Introduce legacy kprobe events support")
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20210921210036.1545557-4-andrii@kernel.org
    46ed5fc3
libbpf.c 280 KB