• Jiri Olsa's avatar
    selftests/bpf: Do not attach kprobe_multi bench to bpf_dispatcher_xdp_func · 7fb27a56
    Jiri Olsa authored
    
    
    Alexei reported crash by running test_progs -j on system
    with 32 cpus.
    
    It turned out the kprobe_multi bench test that attaches all
    ftrace-able functions will race with bpf_dispatcher_update,
    that calls bpf_arch_text_poke on bpf_dispatcher_xdp_func,
    which is ftrace-able function.
    
    Ftrace is not aware of this update so this will cause
    ftrace_bug with:
    
      WARNING: CPU: 6 PID: 1985 at
      arch/x86/kernel/ftrace.c:94 ftrace_verify_code+0x27/0x50
      ...
      ftrace_replace_code+0xa3/0x170
      ftrace_modify_all_code+0xbd/0x150
      ftrace_startup_enable+0x3f/0x50
      ftrace_startup+0x98/0xf0
      register_ftrace_function+0x20/0x60
      register_fprobe_ips+0xbb/0xd0
      bpf_kprobe_multi_link_attach+0x179/0x430
      __sys_bpf+0x18a1/0x2440
      ...
      ------------[ ftrace bug ]------------
      ftrace failed to modify
      [<ffffffff818d9380>] bpf_dispatcher_xdp_func+0x0/0x10
       actual:   ffffffe9:7b:ffffff9c:77:1e
      Setting ftrace call site to call ftrace function
    
    It looks like we need some way to hide some functions
    from ftrace, but meanwhile we workaround this by skipping
    bpf_dispatcher_xdp_func from kprobe_multi bench test.
    Reported-by: default avatarAlexei Starovoitov <ast@kernel.org>
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
    Acked-by: default avatarYonghong Song <yhs@fb.com>
    Link: https://lore.kernel.org/bpf/20220714082316.479181-1-jolsa@kernel.org
    7fb27a56
kprobe_multi_test.c 12.4 KB