44c6dc940b
Nearly all modern compilers support a stack-protector option, and nearly all modern distributions enable the kernel stack-protector, so enabling this by default in kernel builds would make sense. However, Kconfig does not have knowledge of available compiler features, so it isn't safe to force on, as this would unconditionally break builds for the compilers or architectures that don't have support. Instead, this introduces a new option, CONFIG_CC_STACKPROTECTOR_AUTO, which attempts to discover the best possible stack-protector available, and will allow builds to proceed even if the compiler doesn't support any stack-protector. This option is made the default so that kernels built with modern compilers will be protected-by-default against stack buffer overflows, avoiding things like the recent BlueBorne attack. Selection of a specific stack-protector option remains available, including disabling it. Additionally, tiny.config is adjusted to use CC_STACKPROTECTOR_NONE, since that's the option with the least code size (and it used to be the default, so we have to explicitly choose it there now). Link: http://lkml.kernel.org/r/1510076320-69931-4-git-send-email-keescook@chromium.org Signed-off-by: Kees Cook <keescook@chromium.org> Tested-by: Laura Abbott <labbott@redhat.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Josh Triplett <josh@joshtriplett.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
17 lines
513 B
Plaintext
17 lines
513 B
Plaintext
# CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE is not set
|
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|
# CONFIG_KERNEL_GZIP is not set
|
|
# CONFIG_KERNEL_BZIP2 is not set
|
|
# CONFIG_KERNEL_LZMA is not set
|
|
CONFIG_KERNEL_XZ=y
|
|
# CONFIG_KERNEL_LZO is not set
|
|
# CONFIG_KERNEL_LZ4 is not set
|
|
CONFIG_OPTIMIZE_INLINING=y
|
|
# CONFIG_SLAB is not set
|
|
# CONFIG_SLUB is not set
|
|
CONFIG_SLOB=y
|
|
CONFIG_CC_STACKPROTECTOR_NONE=y
|
|
# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
|
|
# CONFIG_CC_STACKPROTECTOR_STRONG is not set
|
|
# CONFIG_CC_STACKPROTECTOR_AUTO is not set
|