• Jiri Olsa's avatar
    bpf: Add get_func_[arg|ret|arg_cnt] helpers · f92c1e18
    Jiri Olsa authored
    Adding following helpers for tracing programs:
    
    Get n-th argument of the traced function:
      long bpf_get_func_arg(void *ctx, u32 n, u64 *value)
    
    Get return value of the traced function:
      long bpf_get_func_ret(void *ctx, u64 *value)
    
    Get arguments count of the traced function:
      long bpf_get_func_arg_cnt(void *ctx)
    
    The trampoline now stores number of arguments on ctx-8
    address, so it's easy to verify argument index and find
    return value argument's position.
    
    Moving function ip address on the trampoline stack behind
    the number of functions arguments, so it's now stored on
    ctx-16 address if it's needed.
    
    All helpers above are inlined by verifier.
    
    Also bit unrelated small change - using newly added function
    bpf_prog_has_trampoline in check_get_func_ip.
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Link: https://lore.kernel.org/bpf/20211208193245.172141-5-jolsa@kernel.org
    f92c1e18
trampoline.c 16.4 KB