2022-06-10 23:39:27

by Sami Tolvanen

[permalink] [raw]
Subject: [RFC PATCH v3 16/20] kallsyms: Drop CONFIG_CFI_CLANG workarounds

With -fsanitize=kcfi, the compiler no longer renames static
functions with CONFIG_CFI_CLANG + ThinLTO. Drop the code that cleans
up the ThinLTO hash from the function names.

Signed-off-by: Sami Tolvanen <[email protected]>
---
kernel/kallsyms.c | 17 -----------------
1 file changed, 17 deletions(-)

diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
index fbdf8d3279ac..2fbb94817e02 100644
--- a/kernel/kallsyms.c
+++ b/kernel/kallsyms.c
@@ -179,7 +179,6 @@ static bool cleanup_symbol_name(char *s)
* character in an identifier in C. Suffixes observed:
* - foo.llvm.[0-9a-f]+
* - foo.[0-9a-f]+
- * - foo.[0-9a-f]+.cfi_jt
*/
res = strchr(s, '.');
if (res) {
@@ -187,22 +186,6 @@ static bool cleanup_symbol_name(char *s)
return true;
}

- if (!IS_ENABLED(CONFIG_CFI_CLANG) ||
- !IS_ENABLED(CONFIG_LTO_CLANG_THIN) ||
- CONFIG_CLANG_VERSION >= 130000)
- return false;
-
- /*
- * Prior to LLVM 13, the following suffixes were observed when thinLTO
- * and CFI are both enabled:
- * - foo$[0-9]+
- */
- res = strrchr(s, '$');
- if (res) {
- *res = '\0';
- return true;
- }
-
return false;
}

--
2.36.1.476.g0c4daa206d-goog


2022-06-11 00:11:39

by Nick Desaulniers

[permalink] [raw]
Subject: Re: [RFC PATCH v3 16/20] kallsyms: Drop CONFIG_CFI_CLANG workarounds

On Fri, Jun 10, 2022 at 4:35 PM Sami Tolvanen <[email protected]> wrote:
>
> With -fsanitize=kcfi, the compiler no longer renames static
> functions with CONFIG_CFI_CLANG + ThinLTO. Drop the code that cleans
> up the ThinLTO hash from the function names.

Good riddance!
Reviewed-by: Nick Desaulniers <[email protected]>

>
> Signed-off-by: Sami Tolvanen <[email protected]>
> ---
> kernel/kallsyms.c | 17 -----------------
> 1 file changed, 17 deletions(-)
>
> diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
> index fbdf8d3279ac..2fbb94817e02 100644
> --- a/kernel/kallsyms.c
> +++ b/kernel/kallsyms.c
> @@ -179,7 +179,6 @@ static bool cleanup_symbol_name(char *s)
> * character in an identifier in C. Suffixes observed:
> * - foo.llvm.[0-9a-f]+
> * - foo.[0-9a-f]+
> - * - foo.[0-9a-f]+.cfi_jt
> */
> res = strchr(s, '.');
> if (res) {
> @@ -187,22 +186,6 @@ static bool cleanup_symbol_name(char *s)
> return true;
> }
>
> - if (!IS_ENABLED(CONFIG_CFI_CLANG) ||
> - !IS_ENABLED(CONFIG_LTO_CLANG_THIN) ||
> - CONFIG_CLANG_VERSION >= 130000)
> - return false;
> -
> - /*
> - * Prior to LLVM 13, the following suffixes were observed when thinLTO
> - * and CFI are both enabled:
> - * - foo$[0-9]+
> - */
> - res = strrchr(s, '$');
> - if (res) {
> - *res = '\0';
> - return true;
> - }
> -
> return false;
> }
>
> --
> 2.36.1.476.g0c4daa206d-goog
>


--
Thanks,
~Nick Desaulniers

2022-06-13 20:35:31

by Bill Wendling

[permalink] [raw]
Subject: Re: [RFC PATCH v3 16/20] kallsyms: Drop CONFIG_CFI_CLANG workarounds

On Fri, Jun 10, 2022 at 4:40 PM Nick Desaulniers
<[email protected]> wrote:
>
> On Fri, Jun 10, 2022 at 4:35 PM Sami Tolvanen <[email protected]> wrote:
> >
> > With -fsanitize=kcfi, the compiler no longer renames static
> > functions with CONFIG_CFI_CLANG + ThinLTO. Drop the code that cleans
> > up the ThinLTO hash from the function names.
>
> Good riddance!
> Reviewed-by: Nick Desaulniers <[email protected]>
>
Much clapping!

-bw

> >
> > Signed-off-by: Sami Tolvanen <[email protected]>
> > ---
> > kernel/kallsyms.c | 17 -----------------
> > 1 file changed, 17 deletions(-)
> >
> > diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
> > index fbdf8d3279ac..2fbb94817e02 100644
> > --- a/kernel/kallsyms.c
> > +++ b/kernel/kallsyms.c
> > @@ -179,7 +179,6 @@ static bool cleanup_symbol_name(char *s)
> > * character in an identifier in C. Suffixes observed:
> > * - foo.llvm.[0-9a-f]+
> > * - foo.[0-9a-f]+
> > - * - foo.[0-9a-f]+.cfi_jt
> > */
> > res = strchr(s, '.');
> > if (res) {
> > @@ -187,22 +186,6 @@ static bool cleanup_symbol_name(char *s)
> > return true;
> > }
> >
> > - if (!IS_ENABLED(CONFIG_CFI_CLANG) ||
> > - !IS_ENABLED(CONFIG_LTO_CLANG_THIN) ||
> > - CONFIG_CLANG_VERSION >= 130000)
> > - return false;
> > -
> > - /*
> > - * Prior to LLVM 13, the following suffixes were observed when thinLTO
> > - * and CFI are both enabled:
> > - * - foo$[0-9]+
> > - */
> > - res = strrchr(s, '$');
> > - if (res) {
> > - *res = '\0';
> > - return true;
> > - }
> > -
> > return false;
> > }
> >
> > --
> > 2.36.1.476.g0c4daa206d-goog
> >
>
>
> --
> Thanks,
> ~Nick Desaulniers