Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf trace: Introduce SCA_SOCKADDR_FROM_USER() to set .from_user = true

Paving the way for the generic BPF BTF based syscall arg augmenter.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Howard Chu <howardchu95@gmail.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

+8 -3
+3 -3
tools/perf/builtin-trace.c
··· 1075 1075 [1] = { .scnprintf = SCA_PTR, /* arg2 */ }, }, }, 1076 1076 { .name = "bind", 1077 1077 .arg = { [0] = { .scnprintf = SCA_INT, /* fd */ }, 1078 - [1] = { .scnprintf = SCA_SOCKADDR, /* umyaddr */ }, 1078 + [1] = SCA_SOCKADDR_FROM_USER(umyaddr), 1079 1079 [2] = { .scnprintf = SCA_INT, /* addrlen */ }, }, }, 1080 1080 { .name = "bpf", 1081 1081 .arg = { [0] = STRARRAY(cmd, bpf_cmd), }, }, ··· 1095 1095 .arg = { [0] = { .scnprintf = SCA_CLOSE_FD, /* fd */ }, }, }, 1096 1096 { .name = "connect", 1097 1097 .arg = { [0] = { .scnprintf = SCA_INT, /* fd */ }, 1098 - [1] = { .scnprintf = SCA_SOCKADDR, /* servaddr */ }, 1098 + [1] = SCA_SOCKADDR_FROM_USER(servaddr), 1099 1099 [2] = { .scnprintf = SCA_INT, /* addrlen */ }, }, }, 1100 1100 { .name = "epoll_ctl", 1101 1101 .arg = { [1] = STRARRAY(op, epoll_ctl_ops), }, }, ··· 1289 1289 .arg = { [2] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, }, }, 1290 1290 { .name = "sendto", 1291 1291 .arg = { [3] = { .scnprintf = SCA_MSG_FLAGS, /* flags */ }, 1292 - [4] = { .scnprintf = SCA_SOCKADDR, /* addr */ }, }, }, 1292 + [4] = SCA_SOCKADDR_FROM_USER(addr), }, }, 1293 1293 { .name = "set_tid_address", .errpid = true, }, 1294 1294 { .name = "setitimer", 1295 1295 .arg = { [0] = STRARRAY(which, itimers), }, },
+5
tools/perf/trace/beauty/beauty.h
··· 229 229 size_t syscall_arg__scnprintf_sockaddr(char *bf, size_t size, struct syscall_arg *arg); 230 230 #define SCA_SOCKADDR syscall_arg__scnprintf_sockaddr 231 231 232 + // 'argname' is just documentational at this point, to remove the previous comment with that info 233 + #define SCA_SOCKADDR_FROM_USER(argname) \ 234 + { .scnprintf = SCA_SOCKADDR, \ 235 + .from_user = true, } 236 + 232 237 size_t syscall_arg__scnprintf_socket_protocol(char *bf, size_t size, struct syscall_arg *arg); 233 238 #define SCA_SK_PROTO syscall_arg__scnprintf_socket_protocol 234 239