randstruct: disable Clang 15 support
PATCH 1/1 randstruct: disable Clang 15 support
From: Eric Biggers <[email protected]>
The randstruct support released in Clang 15 is unsafe to use due to a bug that can cause miscompilations: "-frandomize-layout-seed inconsistently randomizes all-function-pointers structs"
(https://github.com/llvm/llvm-project/issues/60349). It has been fixed on the Clang 16 release branch, so add a Clang version check.
--- security/Kconfig.hardening | 3 +++ 1 file changed, 3 insertions(+)
security/Kconfig.hardening +3 -0
@@ -281,6 +281,9 @@ endmenu config CC_HAS_RANDSTRUCT def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null) + # Randstruct was first added in Clang 15, but it isn't safe to use until + # Clang 16 due to https://github.com/llvm/llvm-project/issues/60349 + depends on !CC_IS_CLANG || CLANG_VERSION >= 160000 choice prompt "Randomize layout of sensitive kernel structures"
base-commit: 4ec5183ec48656cec489c49f989c508b68b518e3
Signature · 1 line
2.39.1
Quoted 11 lines · Eric Biggers
From: Eric Biggers <[email protected]>
The randstruct support released in Clang 15 is unsafe to use due to a bug that can cause miscompilations: "-frandomize-layout-seed inconsistently randomizes all-function-pointers structs"
(https://github.com/llvm/llvm-project/issues/60349). It has been fixed on the Clang 16 release branch, so add a Clang version check.Fixes 035f7f87b729 ("randstruct: Enable Clang support")Signed-off-by Eric Biggers <[email protected]>
Quoted 24 lines
--- security/Kconfig.hardening | 3 +++ 1 file changed, 3 insertions(+)security/Kconfig.hardening +3
-0@@ -281,6 +281,9 @@ endmenu config CC_HAS_RANDSTRUCT def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null) + # Randstruct was first added in Clang 15, but it isn't safe to use until + # Clang 16 due to https://github.com/llvm/llvm-project/issues/60349 + depends on !CC_IS_CLANG || CLANG_VERSION >= 160000 choice prompt "Randomize layout of sensitive kernel structures"base-commit:
4ec5183ec48656cec489c49f989c508b68b518e3Signature · 1 line
2.39.1
Bill Wendling
Reviewed-byQuoted 10 lines · Nathan Chancellor
Quoted 8 lines · Eric Biggers
From: Eric Biggers <[email protected]>
The randstruct support released in Clang 15 is unsafe to use due to a bug that can cause miscompilations: "-frandomize-layout-seed inconsistently randomizes all-function-pointers structs"
(https://github.com/llvm/llvm-project/issues/60349). It has been fixed on the Clang 16 release branch, so add a Clang version check.
Quoted 6 lines
Quoted 3 lines
Fixes 035f7f87b729 ("randstruct: Enable Clang support")Signed-off-by Eric Biggers <[email protected]>Reviewed-by Nathan Chancellor <[email protected]>
Quoted 24 lines
Quoted 24 lines
--- security/Kconfig.hardening | 3 +++ 1 file changed, 3 insertions(+)security/Kconfig.hardening +3
-0@@ -281,6 +281,9 @@ endmenu config CC_HAS_RANDSTRUCT def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null) + # Randstruct was first added in Clang 15, but it isn't safe to use until + # Clang 16 due to https://github.com/llvm/llvm-project/issues/60349 + depends on !CC_IS_CLANG || CLANG_VERSION >= 160000 choice prompt "Randomize layout of sensitive kernel structures"base-commit:
4ec5183ec48656cec489c49f989c508b68b518e3--
2.39.1
Quoted 9 lines · Eric Biggers
From: Eric Biggers <[email protected]>
The randstruct support released in Clang 15 is unsafe to use due to a bug that can cause miscompilations: "-frandomize-layout-seed inconsistently randomizes all-function-pointers structs"
(https://github.com/llvm/llvm-project/issues/60349). It has been fixed on the Clang 16 release branch, so add a Clang version check.
Quoted 3 lines
Fixes 035f7f87b729 ("randstruct: Enable Clang support")Signed-off-by Eric Biggers <[email protected]>
Thanks for the patch and report. Guessing that wasn't fun to debug.
Quoted 24 lines
--- security/Kconfig.hardening | 3 +++ 1 file changed, 3 insertions(+)security/Kconfig.hardening +3
-0@@ -281,6 +281,9 @@ endmenu config CC_HAS_RANDSTRUCT def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null) + # Randstruct was first added in Clang 15, but it isn't safe to use until + # Clang 16 due to https://github.com/llvm/llvm-project/issues/60349 + depends on !CC_IS_CLANG || CLANG_VERSION >= 160000 choice prompt "Randomize layout of sensitive kernel structures"base-commit:
4ec5183ec48656cec489c49f989c508b68b518e3--
2.39.1
Signature · 2 lines
Thanks, ~Nick Desaulniers
Kees Cook
AppliedQuoted 9 lines · Eric Biggers
From: Eric Biggers <[email protected]>
The randstruct support released in Clang 15 is unsafe to use due to a bug that can cause miscompilations: "-frandomize-layout-seed inconsistently randomizes all-function-pointers structs"
(https://github.com/llvm/llvm-project/issues/60349). It has been fixed on the Clang 16 release branch, so add a Clang version check.[...]
Applied to for-next/hardening, thanks!
[1/1] randstruct: disable Clang 15 support
https://git.kernel.org/kees/c/7ee3819f2ba9
Signature · 1 line
Kees Cook