diff options
| -rw-r--r-- | security/Kconfig.hardening | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/security/Kconfig.hardening b/security/Kconfig.hardening index c6cb2d9b2905..107176069af3 100644 --- a/security/Kconfig.hardening +++ b/security/Kconfig.hardening | |||
| @@ -61,6 +61,7 @@ choice | |||
| 61 | config GCC_PLUGIN_STRUCTLEAK_BYREF | 61 | config GCC_PLUGIN_STRUCTLEAK_BYREF |
| 62 | bool "zero-init structs passed by reference (strong)" | 62 | bool "zero-init structs passed by reference (strong)" |
| 63 | depends on GCC_PLUGINS | 63 | depends on GCC_PLUGINS |
| 64 | depends on !(KASAN && KASAN_STACK=1) | ||
| 64 | select GCC_PLUGIN_STRUCTLEAK | 65 | select GCC_PLUGIN_STRUCTLEAK |
| 65 | help | 66 | help |
| 66 | Zero-initialize any structures on the stack that may | 67 | Zero-initialize any structures on the stack that may |
| @@ -70,9 +71,15 @@ choice | |||
| 70 | exposures, like CVE-2017-1000410: | 71 | exposures, like CVE-2017-1000410: |
| 71 | https://git.kernel.org/linus/06e7e776ca4d3654 | 72 | https://git.kernel.org/linus/06e7e776ca4d3654 |
| 72 | 73 | ||
| 74 | As a side-effect, this keeps a lot of variables on the | ||
| 75 | stack that can otherwise be optimized out, so combining | ||
| 76 | this with CONFIG_KASAN_STACK can lead to a stack overflow | ||
| 77 | and is disallowed. | ||
| 78 | |||
| 73 | config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL | 79 | config GCC_PLUGIN_STRUCTLEAK_BYREF_ALL |
| 74 | bool "zero-init anything passed by reference (very strong)" | 80 | bool "zero-init anything passed by reference (very strong)" |
| 75 | depends on GCC_PLUGINS | 81 | depends on GCC_PLUGINS |
| 82 | depends on !(KASAN && KASAN_STACK=1) | ||
| 76 | select GCC_PLUGIN_STRUCTLEAK | 83 | select GCC_PLUGIN_STRUCTLEAK |
| 77 | help | 84 | help |
| 78 | Zero-initialize any stack variables that may be passed | 85 | Zero-initialize any stack variables that may be passed |
