• Jiri Olsa's avatar
    ftrace: Keep the resolved addr in kallsyms_callback · 9d68c19c
    Jiri Olsa authored
    Keeping the resolved 'addr' in kallsyms_callback, instead of taking
    ftrace_location value, because we depend on symbol address in the
    cookie related code.
    
    With CONFIG_X86_KERNEL_IBT option the ftrace_location value differs
    from symbol address, which screwes the symbol address cookies matching.
    
    There are 2 users of this function:
    - bpf_kprobe_multi_link_attach
        for which this fix is for
    
    - get_ftrace_locations
        which is used by register_fprobe_syms
    
        this function needs to get symbols resolved to addresses,
        but does not need 'ftrace location addresses' at this point
        there's another ftrace location translation in the path done
        by ftrace_set_filter_ips call:
    
         register_fprobe_syms
           addrs = get_ftrace_locations
    
           register_fprobe_ips(addrs)
             ...
             ftrace_set_filter_ips
               ...
                 __ftrace_match_addr
                   ip = ftrace_location(ip);
                   ...
    Reviewed-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/r/20220926153340.1621984-3-jolsa@kernel.orgSigned-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
    9d68c19c
ftrace.c 200 KB