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: Mon, 17 Aug 2020 15:02:09 -0700 From: Nick Desaulniers <ndesaulniers@...gle.com> To: Masahiro Yamada <masahiroy@...nel.org>, Andrew Morton <akpm@...ux-foundation.org>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de> Cc: Michal Marek <michal.lkml@...kovi.net>, linux-kbuild@...r.kernel.org, linux-kernel@...r.kernel.org, Kees Cook <keescook@...omium.org>, Tony Luck <tony.luck@...el.com>, Dmitry Vyukov <dvyukov@...gle.com>, Michael Ellerman <mpe@...erman.id.au>, Joe Perches <joe@...ches.com>, Joel Fernandes <joel@...lfernandes.org>, Daniel Axtens <dja@...ens.net>, Arvind Sankar <nivedita@...m.mit.edu>, Andy Shevchenko <andriy.shevchenko@...ux.intel.com>, Alexandru Ardelean <alexandru.ardelean@...log.com>, Yury Norov <yury.norov@...il.com>, x86@...nel.org, "H . Peter Anvin" <hpa@...or.com>, Ard Biesheuvel <ardb@...nel.org>, "Paul E . McKenney" <paulmck@...nel.org>, Daniel Kiper <daniel.kiper@...cle.com>, Bruce Ashfield <bruce.ashfield@...il.com>, Marco Elver <elver@...gle.com>, Vamshi K Sthambamkadi <vamshi.k.sthambamkadi@...il.com>, Andi Kleen <ak@...e.de>, Linus Torvalds <torvalds@...ux-foundation.org>, "Dávid Bolvanský" <david.bolvansky@...il.com>, Eli Friedman <efriedma@...cinc.com>, Nick Desaulniers <ndesaulniers@...gle.com>, stable@...r.kernel.org, Sami Tolvanen <samitolvanen@...gle.com> Subject: [PATCH 1/4] Makefile: add -fno-builtin-stpcpy LLVM implemented a recent "libcall optimization" that lowers calls to `sprintf(dest, "%s", str)` where the return value is used to `stpcpy(dest, str) - dest`. This generally avoids the machinery involved in parsing format strings. This optimization was introduced into clang-12. Because the kernel does not provide an implementation of stpcpy, we observe linkage failures for almost all targets when building with ToT clang. The interface is unsafe as it does not perform any bounds checking. Disable this "libcall optimization" via `-fno-builtin-stpcpy`. Unlike commit 5f074f3e192f ("lib/string.c: implement a basic bcmp") which cited failures with `-fno-builtin-*` flags being retained in LLVM LTO, that bug seems to have been fixed by https://reviews.llvm.org/D71193, so the above sha can now be reverted in favor of `-fno-builtin-bcmp`. Cc: stable@...r.kernel.org # 4.4 Link: https://bugs.llvm.org/show_bug.cgi?id=47162 Link: https://github.com/ClangBuiltLinux/linux/issues/1126 Link: https://reviews.llvm.org/D85963 Reported-by: Sami Tolvanen <samitolvanen@...gle.com> Suggested-by: Dávid Bolvanský <david.bolvansky@...il.com> Suggested-by: Kees Cook <keescook@...omium.org> Signed-off-by: Nick Desaulniers <ndesaulniers@...gle.com> --- Makefile | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Makefile b/Makefile index 9cac6fde3479..211a1b6f6478 100644 --- a/Makefile +++ b/Makefile @@ -959,6 +959,12 @@ ifdef CONFIG_RETPOLINE KBUILD_CFLAGS += $(call cc-option,-fcf-protection=none) endif +# The compiler may "libcall optimize" certain function calls into the below +# functions, for architectures that don't use -ffreestanding. If we don't plan +# to provide implementations of these routines, then prevent the compiler from +# emitting calls to what will be undefined symbols. +KBUILD_CFLAGS += -fno-builtin-stpcpy + # include additional Makefiles when needed include-y := scripts/Makefile.extrawarn include-$(CONFIG_KASAN) += scripts/Makefile.kasan -- 2.28.0.220.ged08abb693-goog
Powered by blists - more mailing lists