• T
    bpf: verifier: refactor check_attach_btf_id() · f7b12b6f
    Toke Høiland-Jørgensen 提交于
    The check_attach_btf_id() function really does three things:
    
    1. It performs a bunch of checks on the program to ensure that the
       attachment is valid.
    
    2. It stores a bunch of state about the attachment being requested in
       the verifier environment and struct bpf_prog objects.
    
    3. It allocates a trampoline for the attachment.
    
    This patch splits out (1.) and (3.) into separate functions which will
    perform the checks, but return the computed values instead of directly
    modifying the environment. This is done in preparation for reusing the
    checks when the actual attachment is happening, which will allow tracing
    programs to have multiple (compatible) attachments.
    
    This also fixes a bug where a bunch of checks were skipped if a trampoline
    already existed for the tracing target.
    
    Fixes: 6ba43b76 ("bpf: Attachment verification for BPF_MODIFY_RETURN")
    Fixes: 1e6c62a8 ("bpf: Introduce sleepable BPF programs")
    Acked-by: NAndrii Nakryiko <andriin@fb.com>
    Signed-off-by: NToke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: NAlexei Starovoitov <ast@kernel.org>
    f7b12b6f
bpf_verifier.h 16.4 KB