• Leo Yan's avatar
    perf trace: Remove unused bpf map 'syscalls' · 8daf87f5
    Leo Yan authored
    augmented_raw_syscalls.c defines the bpf map 'syscalls' which is
    initialized by perf tool in user space to indicate which system calls
    are enabled for tracing, on the other flip eBPF program relies on the
    map to filter out the trace events which are not enabled.
    
    The map also includes a field 'string_args_len[6]' which presents the
    string length if the corresponding argument is a string type.
    
    Now the map 'syscalls' is not used, bpf program doesn't use it as filter
    anymore, this is replaced by using the function bpf_tail_call() and
    PROG_ARRAY syscalls map.  And we don't need to explicitly set the string
    length anymore, bpf_probe_read_str() is smart to copy the string and
    return string length.
    
    Therefore, it's safe to remove the bpf map 'syscalls'.
    
    To consolidate the code, this patch removes the definition of map
    'syscalls' from augmented_raw_syscalls.c and drops code for using
    the map in the perf trace.
    
    Note, since function trace__set_ev_qualifier_bpf_filter() is removed,
    calling trace__init_syscall_bpf_progs() from it is also removed.  We
    don't need to worry it because trace__init_syscall_bpf_progs() is
    still invoked from trace__init_syscalls_bpf_prog_array_maps() for
    initialization the system call's bpf program callback.
    
    After:
    
      # perf trace -e examples/bpf/augmented_raw_syscalls.c,open* --max-events 10 perf stat --quiet sleep 0.001
      openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libelf.so.1", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libdw.so.1", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libunwind.so.8", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libunwind-aarch64.so.8", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libcrypto.so.3", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libslang.so.2", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libperl.so.5.34", O_RDONLY|O_CLOEXEC) = 3
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
    
      # perf trace -e examples/bpf/augmented_raw_syscalls.c --max-events 10 perf stat --quiet sleep 0.001
      ... [continued]: execve())             = 0
      brk(NULL)                               = 0xaaaab1d28000
      faccessat(-100, "/etc/ld.so.preload", 4) = -1 ENOENT (No such file or directory)
      openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
      close(3</usr/lib/aarch64-linux-gnu/libcrypto.so.3>) = 0
      openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
      read(3</usr/lib/aarch64-linux-gnu/libcrypto.so.3>, 0xfffff33f70d0, 832) = 832
      munmap(0xffffb5519000, 28672)           = 0
      munmap(0xffffb55b7000, 32880)           = 0
      mprotect(0xffffb55a6000, 61440, PROT_NONE) = 0
    Signed-off-by: default avatarLeo Yan <leo.yan@linaro.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: default avatarIan Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: bpf@vger.kernel.org
    Link: https://lore.kernel.org/r/20221121075237.127706-6-leo.yan@linaro.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    8daf87f5
augmented_raw_syscalls.c 12.3 KB