• Song Liu's avatar
    perf/core: Allow non-privileged uprobe for user processes · 9fd2e48b
    Song Liu authored
    Currently, non-privileged user could only use uprobe with
    
        kernel.perf_event_paranoid = -1
    
    However, setting perf_event_paranoid to -1 leaks other users' processes to
    non-privileged uprobes.
    
    To introduce proper permission control of uprobes, we are building the
    following system:
    
      A daemon with CAP_SYS_ADMIN is in charge to create uprobes via tracefs;
      Users asks the daemon to create uprobes;
      Then user can attach uprobe only to processes owned by the user.
    
    This patch allows non-privileged user to attach uprobe to processes owned
    by the user.
    
    The following example shows how to use uprobe with non-privileged user.
    This is based on Brendan's blog post [1]
    
    1. Create uprobe with root:
    
      sudo perf probe -x 'readline%return +0($retval):string'
    
    2. Then non-root user can use the uprobe as:
    
      perf record -vvv -e probe_bash:readline__return -p <pid> sleep 20
      perf script
    
    [1] http://www.brendangregg.com/blog/2015-06-28/linux-ftrace-uprobe.htmlSigned-off-by: default avatarSong Liu <songliubraving@fb.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <kernel-team@fb.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190507161545.788381-1-songliubraving@fb.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    9fd2e48b
core.c 288 KB