• J
    ftrace: Keep the resolved addr in kallsyms_callback · 9d68c19c
    Jiri Olsa 提交于
    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: NMasami Hiramatsu (Google) <mhiramat@kernel.org>
    Signed-off-by: NJiri Olsa <jolsa@kernel.org>
    Link: https://lore.kernel.org/r/20220926153340.1621984-3-jolsa@kernel.orgSigned-off-by: NAlexei Starovoitov <ast@kernel.org>
    9d68c19c
ftrace.c 199.9 KB