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
| ||
|
Date: Tue, 29 Sep 2020 16:44:25 -0700 From: Kees Cook <keescook@...omium.org> To: Nick Desaulniers <ndesaulniers@...gle.com> Cc: Andrew Morton <akpm@...ux-foundation.org>, kbuild test robot <lkp@...el.com>, Nathan Chancellor <natechancellor@...il.com>, Masahiro Yamada <yamada.masahiro@...ionext.com>, Matthias Maennich <maennich@...gle.com>, Jessica Yu <jeyu@...nel.org>, Greg Kroah-Hartman <gregkh@...uxfoundation.org>, Will Deacon <will@...nel.org>, linux-kernel@...r.kernel.org, clang-built-linux@...glegroups.com Subject: Re: [PATCH] export.h: fix section name for CONFIG_TRIM_UNUSED_KSYMS for Clang On Tue, Sep 29, 2020 at 12:07:00PM -0700, Nick Desaulniers wrote: > When enabling CONFIG_TRIM_UNUSED_KSYMS, the linker will warn about the > orphan sections: > (".discard.ksym") is being placed in '".discard.ksym"' > repeatedly when linking vmlinux. This is because the stringification > operator, `#`, in the preprocessor escapes strings. GCC and Clang > differ in how they treat section names that contain \". > > The portable solution is to not use a string literal with the > preprocessor stringification operator. > > Link: https://bugs.llvm.org/show_bug.cgi?id=42950 > Link: https://github.com/ClangBuiltLinux/linux/issues/1166 > Fixes: commit bbda5ec671d3 ("kbuild: simplify dependency generation for CONFIG_TRIM_UNUSED_KSYMS") > Reported-by: kbuild test robot <lkp@...el.com> > Suggested-by: Kees Cook <keescook@...omium.org> > Signed-off-by: Nick Desaulniers <ndesaulniers@...gle.com> Reviewed-by: Kees Cook <keescook@...omium.org> Do these other cases need fixing too? arch/arm64/mm/mmu.c:u64 __section(".mmuoff.data.write") vabits_actual; include/linux/srcutree.h: __section("___srcu_struct_ptrs") = &name -Kees > --- > include/linux/export.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/export.h b/include/linux/export.h > index fceb5e855717..8933ff6ad23a 100644 > --- a/include/linux/export.h > +++ b/include/linux/export.h > @@ -130,7 +130,7 @@ struct kernel_symbol { > * discarded in the final link stage. > */ > #define __ksym_marker(sym) \ > - static int __ksym_marker_##sym[0] __section(".discard.ksym") __used > + static int __ksym_marker_##sym[0] __section(.discard.ksym) __used > > #define __EXPORT_SYMBOL(sym, sec, ns) \ > __ksym_marker(sym); \ > -- > 2.28.0.709.gb0816b6eb0-goog > -- Kees Cook
Powered by blists - more mailing lists