• Joe Stringer's avatar
    bpf: Add reference tracking to verifier · fd978bf7
    Joe Stringer authored
    Allow helper functions to acquire a reference and return it into a
    register. Specific pointer types such as the PTR_TO_SOCKET will
    implicitly represent such a reference. The verifier must ensure that
    these references are released exactly once in each path through the
    program.
    
    To achieve this, this commit assigns an id to the pointer and tracks it
    in the 'bpf_func_state', then when the function or program exits,
    verifies that all of the acquired references have been freed. When the
    pointer is passed to a function that frees the reference, it is removed
    from the 'bpf_func_state` and all existing copies of the pointer in
    registers are marked invalid.
    Signed-off-by: default avatarJoe Stringer <joe@wand.net.nz>
    Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
    fd978bf7
verifier.c 184 KB