lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAM9d7cgVmH=sKH07+fPVzEPzCfDiKaMs_-kNgFHFc6W+0F9MfA@mail.gmail.com>
Date:   Tue, 1 Feb 2022 11:46:25 -0800
From:   Namhyung Kim <namhyung@...nel.org>
To:     Arnaldo Carvalho de Melo <acme@...nel.org>
Cc:     Suren Baghdasaryan <surenb@...gle.com>,
        Adrian Hunter <adrian.hunter@...el.com>,
        Colin Cross <ccross@...gle.com>,
        Ian Rogers <irogers@...gle.com>, Jiri Olsa <jolsa@...nel.org>,
        Kees Cook <keescook@...omium.org>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 1/1] perf beauty: Make the prctl arg regexp more strict to
 cope with PR_SET_VMA

Hi Arnaldo,

On Tue, Feb 1, 2022 at 8:02 AM Arnaldo Carvalho de Melo <acme@...nel.org> wrote:
>
> FYI, I'm carrying this on the perf tools tree:
>
> ---
>
> 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).

It seems that we also have PR_SET_PTRACER: 0x59616d61.

>
> 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@...el.com>
> Cc: Colin Cross <ccross@...gle.com>
> Cc: Ian Rogers <irogers@...gle.com>
> Cc: Jiri Olsa <jolsa@...nel.org>
> Cc: Kees Cook <keescook@...omium.org>
> Cc: Namhyung Kim <namhyung@...nel.org>
> Cc: Suren Baghdasaryan <surenb@...gle.com>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
> ---
>  tools/perf/trace/beauty/prctl_option.sh | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/trace/beauty/prctl_option.sh b/tools/perf/trace/beauty/prctl_option.sh
> index 3109d7b05e113bb5..3d278785fe574a0e 100755
> --- a/tools/perf/trace/beauty/prctl_option.sh
> +++ b/tools/perf/trace/beauty/prctl_option.sh
> @@ -4,7 +4,7 @@
>  [ $# -eq 1 ] && header_dir=$1 || header_dir=tools/include/uapi/linux/
>
>  printf "static const char *prctl_options[] = {\n"
> -regex='^#define[[:space:]]+PR_(\w+)[[:space:]]*([[:xdigit:]]+).*'
> +regex='^#define[[:space:]]{1}PR_(\w+)[[:space:]]*([[:xdigit:]]+)([[:space:]]*\/.*)?$'

I'm not sure what the last parenthesis takes care of.

>  egrep $regex ${header_dir}/prctl.h | grep -v PR_SET_PTRACER | \

Maybe just adding PR_SET_VMA here is enough?

Thanks,
Namhyung


>         sed -r "s/$regex/\2 \1/g"       | \
>         sort -n | xargs printf "\t[%s] = \"%s\",\n"
> --
> 2.34.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ