• Masami Hiramatsu's avatar
    tracing/kprobe: Check whether the non-suffixed symbol is notrace · c7411a1a
    Masami Hiramatsu authored
    Check whether the non-suffixed symbol is notrace, since suffixed
    symbols are generated by the compilers for optimization. Based on
    these suffixed symbols, notrace check might not work because
    some of them are just a partial code of the original function.
    (e.g. cold-cache (unlikely) code is separated from original
     function as FUNCTION.cold.XX)
    
    For example, without this fix,
      # echo p device_add.cold.67 > /sys/kernel/debug/tracing/kprobe_events
      sh: write error: Invalid argument
    
      # cat /sys/kernel/debug/tracing/error_log
      [  135.491035] trace_kprobe: error: Failed to register probe event
        Command: p device_add.cold.67
                   ^
      # dmesg | tail -n 1
      [  135.488599] trace_kprobe: Could not probe notrace function device_add.cold.67
    
    With this,
      # echo p device_add.cold.66 > /sys/kernel/debug/tracing/kprobe_events
      # cat /sys/kernel/debug/kprobes/list
      ffffffff81599de9  k  device_add.cold.66+0x0    [DISABLED]
    
    Actually, kprobe blacklist already did similar thing,
    see within_kprobe_blacklist().
    
    Link: http://lkml.kernel.org/r/157233790394.6706.18243942030937189679.stgit@devnote2
    
    Fixes: 45408c4f ("tracing: kprobes: Prohibit probing on notrace function")
    Signed-off-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
    c7411a1a
trace_kprobe.c 45.4 KB