| From 250160ad620a002734e690cc9090af84a9aef2e0 Mon Sep 17 00:00:00 2001 |
| From: Linus Torvalds <torvalds@linux-foundation.org> |
| Date: Fri, 29 Dec 2017 17:34:43 -0800 |
| Subject: [PATCH] kbuild: add '-fno-stack-check' to kernel build options |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 3ce120b16cc548472f80cf8644f90eda958cf1b6 upstream. |
| |
| It appears that hardened gentoo enables "-fstack-check" by default for |
| gcc. |
| |
| That doesn't work _at_all_ for the kernel, because the kernel stack |
| doesn't act like a user stack at all: it's much smaller, and it doesn't |
| auto-expand on use. So the extra "probe one page below the stack" code |
| generated by -fstack-check just breaks the kernel in horrible ways, |
| causing infinite double faults etc. |
| |
| [ I have to say, that the particular code gcc generates looks very |
| stupid even for user space where it works, but that's a separate |
| issue. ] |
| |
| Reported-and-tested-by: Alexander Tsoy <alexander@tsoy.me> |
| Reported-and-tested-by: Toralf Förster <toralf.foerster@gmx.de> |
| Cc: stable@kernel.org |
| Cc: Dave Hansen <dave.hansen@intel.com> |
| Cc: Jiri Kosina <jikos@kernel.org> |
| Cc: Andy Lutomirski <luto@amacapital.net> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/Makefile b/Makefile |
| index 4a1766b1d5cf..53059af372f5 100644 |
| --- a/Makefile |
| +++ b/Makefile |
| @@ -801,6 +801,9 @@ KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign) |
| # disable invalid "can't wrap" optimizations for signed / pointers |
| KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow) |
| |
| +# Make sure -fstack-check isn't enabled (like gentoo apparently did) |
| +KBUILD_CFLAGS += $(call cc-option,-fno-stack-check,) |
| + |
| # conserve stack if available |
| KBUILD_CFLAGS += $(call cc-option,-fconserve-stack) |
| |
| -- |
| 2.15.0 |
| |