Skip to contentSkip to conversation

randstruct: temporarily disable clang support

PATCH In review Eric Biggers 4 participants 5 messages Feb 3, 2023 – Feb 8, 2023

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 randstruct: temporarily disable clang support

From: Eric Biggers <[email protected]>

Randstruct with clang is currently unsafe to use in any clang release that supports it, due to a clang bug that is causing miscompilations:
"-frandomize-layout-seed inconsistently randomizes all-function-pointers structs" (https://github.com/llvm/llvm-project/issues/60349). Disable it temporarily until the bug is fixed and the fix is released in a clang version that can be checked for.

Fixes 035f7f87b729 ("randstruct: Enable Clang support")
---
 security/Kconfig.hardening | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
security/Kconfig.hardening +2 -1
index 53baa95cb644..aad16187148c 100644
@@ -280,7 +280,8 @@ config ZERO_CALL_USED_REGS
 endmenu
 
 config CC_HAS_RANDSTRUCT
-	def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null)
+	# Temporarily disabled due to https://github.com/llvm/llvm-project/issues/60349
+	def_bool n
 
 choice
 	prompt "Randomize layout of sensitive kernel structures"

base-commit: 7b753a909f426f2789d9db6f357c3d59180a9354

Signature · 1 line
2.39.1
#1 lore raw
Quoted 31 lines · Eric Biggers

From: Eric Biggers <[email protected]>

Randstruct with clang is currently unsafe to use in any clang release that supports it, due to a clang bug that is causing miscompilations:
"-frandomize-layout-seed inconsistently randomizes all-function-pointers structs" (https://github.com/llvm/llvm-project/issues/60349). Disable it temporarily until the bug is fixed and the fix is released in a clang version that can be checked for.

Fixes 035f7f87b729 ("randstruct: Enable Clang support")
---
 security/Kconfig.hardening | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
security/Kconfig.hardening +2 -1
index 53baa95cb644..aad16187148c 100644
@@ -280,7 +280,8 @@ config ZERO_CALL_USED_REGS
 endmenu
 
 config CC_HAS_RANDSTRUCT
-	def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null)
+	# Temporarily disabled due to https://github.com/llvm/llvm-project/issues/60349
+	def_bool n
 
 choice
 	prompt "Randomize layout of sensitive kernel structures"
Quoted 3 lines

base-commit: 7b753a909f426f2789d9db6f357c3d59180a9354

Signature · 1 line
2.39.1

This should be fixed with greater precision -- i.e. this is nearly fixed in Clang now, and is likely to be backported. So I think we'll need versioned checks here.

Signature · 1 line
Kees Cook
#2 lore raw
Quoted 41 lines · Kees Cook
Quoted 31 lines · Eric Biggers

From: Eric Biggers <[email protected]>

Randstruct with clang is currently unsafe to use in any clang release that supports it, due to a clang bug that is causing miscompilations:
"-frandomize-layout-seed inconsistently randomizes all-function-pointers structs" (https://github.com/llvm/llvm-project/issues/60349). Disable it temporarily until the bug is fixed and the fix is released in a clang version that can be checked for.

Fixes 035f7f87b729 ("randstruct: Enable Clang support")
---
 security/Kconfig.hardening | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
security/Kconfig.hardening +2 -1
index 53baa95cb644..aad16187148c 100644
@@ -280,7 +280,8 @@ config ZERO_CALL_USED_REGS
 endmenu
 
 config CC_HAS_RANDSTRUCT
-     def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null)
+     # Temporarily disabled due to https://github.com/llvm/llvm-project/issues/60349
+     def_bool n
 
 choice
      prompt "Randomize layout of sensitive kernel structures"
Quoted 3 lines

base-commit: 7b753a909f426f2789d9db6f357c3d59180a9354 --
2.39.1

This should be fixed with greater precision -- i.e. this is nearly fixed in Clang now, and is likely to be backported. So I think we'll need versioned checks here.

Quoted 3 lines

--
Kees Cook

Bill has requested cherry-pick the llvm-project fix into the release/16.x branch [1].
https://github.com/llvm/llvm-project-release-prs/pull/276
It may take one day to land.

[1]: https://github.com/llvm/llvm-project/tree/release/16.x

Signature · 1 line
宋方睿
#3 lore raw
Quoted 52 lines · Fangrui Song
Quoted 41 lines · Kees Cook
Quoted 31 lines · Eric Biggers

From: Eric Biggers <[email protected]>

Randstruct with clang is currently unsafe to use in any clang release that supports it, due to a clang bug that is causing miscompilations:
"-frandomize-layout-seed inconsistently randomizes all-function-pointers structs" (https://github.com/llvm/llvm-project/issues/60349). Disable it temporarily until the bug is fixed and the fix is released in a clang version that can be checked for.

Fixes 035f7f87b729 ("randstruct: Enable Clang support")
---
 security/Kconfig.hardening | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
security/Kconfig.hardening +2 -1
index 53baa95cb644..aad16187148c 100644
@@ -280,7 +280,8 @@ config ZERO_CALL_USED_REGS
 endmenu
 
 config CC_HAS_RANDSTRUCT
-     def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null)
+     # Temporarily disabled due to https://github.com/llvm/llvm-project/issues/60349
+     def_bool n
 
 choice
      prompt "Randomize layout of sensitive kernel structures"
Quoted 3 lines

base-commit: 7b753a909f426f2789d9db6f357c3d59180a9354 --
2.39.1

This should be fixed with greater precision -- i.e. this is nearly fixed in Clang now, and is likely to be backported. So I think we'll need versioned checks here.

Quoted 3 lines

--
Kees Cook

Bill has requested cherry-pick the llvm-project fix into the release/16.x branch [1].
https://github.com/llvm/llvm-project-release-prs/pull/276
It may take one day to land.

Quoted 5 lines

[1]: https://github.com/llvm/llvm-project/tree/release/16.x

--
宋方睿

All landed; the version check should be for 16+. (And the link to the issue report would be nice to retain).

Signature · 2 lines
Thanks,
~Nick Desaulniers
#4 lore raw
Quoted 53 lines · Nick Desaulniers
Quoted 52 lines · Fangrui Song
Quoted 41 lines · Kees Cook
Quoted 31 lines · Eric Biggers

From: Eric Biggers <[email protected]>

Randstruct with clang is currently unsafe to use in any clang release that supports it, due to a clang bug that is causing miscompilations:
"-frandomize-layout-seed inconsistently randomizes all-function-pointers structs" (https://github.com/llvm/llvm-project/issues/60349). Disable it temporarily until the bug is fixed and the fix is released in a clang version that can be checked for.

Fixes 035f7f87b729 ("randstruct: Enable Clang support")
---
 security/Kconfig.hardening | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
security/Kconfig.hardening +2 -1
index 53baa95cb644..aad16187148c 100644
@@ -280,7 +280,8 @@ config ZERO_CALL_USED_REGS
 endmenu
 
 config CC_HAS_RANDSTRUCT
-     def_bool $(cc-option,-frandomize-layout-seed-file=/dev/null)
+     # Temporarily disabled due to https://github.com/llvm/llvm-project/issues/60349
+     def_bool n
 
 choice
      prompt "Randomize layout of sensitive kernel structures"
Quoted 3 lines

base-commit: 7b753a909f426f2789d9db6f357c3d59180a9354 --
2.39.1

This should be fixed with greater precision -- i.e. this is nearly fixed in Clang now, and is likely to be backported. So I think we'll need versioned checks here.

Quoted 3 lines

--
Kees Cook

Bill has requested cherry-pick the llvm-project fix into the release/16.x branch [1].
https://github.com/llvm/llvm-project-release-prs/pull/276
It may take one day to land.

Quoted 8 lines
Quoted 5 lines

[1]: https://github.com/llvm/llvm-project/tree/release/16.x

--
宋方睿

All landed; the version check should be for 16+. (And the link to the issue report would be nice to retain).

Thanks! Done in "[PATCH] randstruct: disable Clang 15 support"
(https://lore.kernel.org/linux-hardening/[email protected]).

- Eric