• Martin KaFai Lau's avatar
    bpf: Remove prog->active check for bpf_lsm and bpf_iter · 271de525
    Martin KaFai Lau authored
    The commit 64696c40 ("bpf: Add __bpf_prog_{enter,exit}_struct_ops for struct_ops trampoline")
    removed prog->active check for struct_ops prog.  The bpf_lsm
    and bpf_iter is also using trampoline.  Like struct_ops, the bpf_lsm
    and bpf_iter have fixed hooks for the prog to attach.  The
    kernel does not call the same hook in a recursive way.
    This patch also removes the prog->active check for
    bpf_lsm and bpf_iter.
    
    A later patch has a test to reproduce the recursion issue
    for a sleepable bpf_lsm program.
    
    This patch appends the '_recur' naming to the existing
    enter and exit functions that track the prog->active counter.
    New __bpf_prog_{enter,exit}[_sleepable] function are
    added to skip the prog->active tracking. The '_struct_ops'
    version is also removed.
    
    It also moves the decision on picking the enter and exit function to
    the new bpf_trampoline_{enter,exit}().  It returns the '_recur' ones
    for all tracing progs to use.  For bpf_lsm, bpf_iter,
    struct_ops (no prog->active tracking after 64696c40), and
    bpf_lsm_cgroup (no prog->active tracking after 69fd337a),
    it will return the functions that don't track the prog->active.
    Signed-off-by: default avatarMartin KaFai Lau <martin.lau@kernel.org>
    Link: https://lore.kernel.org/r/20221025184524.3526117-2-martin.lau@linux.devSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    271de525
syscall.c 128 KB