Message ID | 20200819191654.1130563-2-ndesaulniers@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | -ffreestanding/-fno-builtin-* patches | expand |
On Wed, Aug 19, 2020 at 12:16:50PM -0700, Nick Desaulniers wrote: > 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`. > > Cc: stable@vger.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@google.com> > Suggested-by: Dávid Bolvanský <david.bolvansky@gmail.com> > Suggested-by: Kees Cook <keescook@chromium.org> > Reviewed-by: Kees Cook <keescook@chromium.org> > Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Tested-by: Nathan Chancellor <natechancellor@gmail.com> > --- > Makefile | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/Makefile b/Makefile > index 9cac6fde3479..e523dc8d30e0 100644 > --- a/Makefile > +++ b/Makefile > @@ -578,6 +578,7 @@ ifneq ($(LLVM_IAS),1) > CLANG_FLAGS += -no-integrated-as > endif > CLANG_FLAGS += -Werror=unknown-warning-option > +CLANG_FLAGS += -fno-builtin-stpcpy > KBUILD_CFLAGS += $(CLANG_FLAGS) > KBUILD_AFLAGS += $(CLANG_FLAGS) > export CLANG_FLAGS > -- > 2.28.0.297.g1956fa8f8d-goog >
diff --git a/Makefile b/Makefile index 9cac6fde3479..e523dc8d30e0 100644 --- a/Makefile +++ b/Makefile @@ -578,6 +578,7 @@ ifneq ($(LLVM_IAS),1) CLANG_FLAGS += -no-integrated-as endif CLANG_FLAGS += -Werror=unknown-warning-option +CLANG_FLAGS += -fno-builtin-stpcpy KBUILD_CFLAGS += $(CLANG_FLAGS) KBUILD_AFLAGS += $(CLANG_FLAGS) export CLANG_FLAGS