perf beauty: Make the prctl arg regexp more strict to cope with PR_SET_VMA
authorArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 1 Feb 2022 15:53:16 +0000 (12:53 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 1 Feb 2022 16:03:27 +0000 (13:03 -0300)
commit100198322b2eb7fb38750cb0fcae5cd533907410
tree415ca07c9459e52020a4457e6da973030cd50da9
parentd5381cc9f123d64bee1d1a124cd98faa5fa36ca6
perf beauty: Make the prctl arg regexp more strict to cope with PR_SET_VMA

This new PR_SET_VMA value isn't in sequence with all the other prctl
arguments and instead uses a big, 0x prefixed hex number: 0x53564d41 (S V M A).

This makes it harder to generate a string table as it would be rather
sparse, so make the regexp more stricter to avoid catching those.

A followup patch for 'perf trace' to cope with such oddities will be
needed, but then its a matter for the next merge window.

The next patch will update the prctl.h file to cope with this perf build
warning:

  Warning: Kernel ABI header at 'tools/include/uapi/linux/prctl.h' differs from latest version at 'include/uapi/linux/prctl.h'
  diff -u tools/include/uapi/linux/prctl.h include/uapi/linux/prctl.h

Here is the output of this script:

  $ tools/perf/trace/beauty/prctl_option.sh
  static const char *prctl_options[] = {
   [1] = "SET_PDEATHSIG",
   [2] = "GET_PDEATHSIG",
   [3] = "GET_DUMPABLE",
   [4] = "SET_DUMPABLE",
   [5] = "GET_UNALIGN",
   [6] = "SET_UNALIGN",
   [7] = "GET_KEEPCAPS",
   [8] = "SET_KEEPCAPS",
   [9] = "GET_FPEMU",
   [10] = "SET_FPEMU",
   [11] = "GET_FPEXC",
   [12] = "SET_FPEXC",
   [13] = "GET_TIMING",
   [14] = "SET_TIMING",
   [15] = "SET_NAME",
   [16] = "GET_NAME",
   [19] = "GET_ENDIAN",
   [20] = "SET_ENDIAN",
   [21] = "GET_SECCOMP",
   [22] = "SET_SECCOMP",
   [23] = "CAPBSET_READ",
   [24] = "CAPBSET_DROP",
   [25] = "GET_TSC",
   [26] = "SET_TSC",
   [27] = "GET_SECUREBITS",
   [28] = "SET_SECUREBITS",
   [29] = "SET_TIMERSLACK",
   [30] = "GET_TIMERSLACK",
   [31] = "TASK_PERF_EVENTS_DISABLE",
   [32] = "TASK_PERF_EVENTS_ENABLE",
   [33] = "MCE_KILL",
   [34] = "MCE_KILL_GET",
   [35] = "SET_MM",
   [36] = "SET_CHILD_SUBREAPER",
   [37] = "GET_CHILD_SUBREAPER",
   [38] = "SET_NO_NEW_PRIVS",
   [39] = "GET_NO_NEW_PRIVS",
   [40] = "GET_TID_ADDRESS",
   [41] = "SET_THP_DISABLE",
   [42] = "GET_THP_DISABLE",
   [43] = "MPX_ENABLE_MANAGEMENT",
   [44] = "MPX_DISABLE_MANAGEMENT",
   [45] = "SET_FP_MODE",
   [46] = "GET_FP_MODE",
   [47] = "CAP_AMBIENT",
   [50] = "SVE_SET_VL",
   [51] = "SVE_GET_VL",
   [52] = "GET_SPECULATION_CTRL",
   [53] = "SET_SPECULATION_CTRL",
   [54] = "PAC_RESET_KEYS",
   [55] = "SET_TAGGED_ADDR_CTRL",
   [56] = "GET_TAGGED_ADDR_CTRL",
   [57] = "SET_IO_FLUSHER",
   [58] = "GET_IO_FLUSHER",
   [59] = "SET_SYSCALL_USER_DISPATCH",
   [60] = "PAC_SET_ENABLED_KEYS",
   [61] = "PAC_GET_ENABLED_KEYS",
   [62] = "SCHED_CORE",
  };
  static const char *prctl_set_mm_options[] = {
   [1] = "START_CODE",
   [2] = "END_CODE",
   [3] = "START_DATA",
   [4] = "END_DATA",
   [5] = "START_STACK",
   [6] = "START_BRK",
   [7] = "BRK",
   [8] = "ARG_START",
   [9] = "ARG_END",
   [10] = "ENV_START",
   [11] = "ENV_END",
   [12] = "AUXV",
   [13] = "EXE_FILE",
   [14] = "MAP",
   [15] = "MAP_SIZE",
  };
  $

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Colin Cross <ccross@google.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Link: https://lore.kernel.org/lkml/YflZqY0rYQ3d1bKt@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/trace/beauty/prctl_option.sh