diff mbox series

[RFC,v2,14/25] kmsan: Kconfig changes to disable options incompatible with KMSAN

Message ID 20191030142237.249532-15-glider@google.com (mailing list archive)
State New, archived
Headers show
Series Add KernelMemorySanitizer infrastructure | expand

Commit Message

Alexander Potapenko Oct. 30, 2019, 2:22 p.m. UTC
Certain config options are currently incompatible with KMSAN, disable
them.

Signed-off-by: Alexander Potapenko <glider@google.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
To: Alexander Potapenko <glider@google.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Harry Wentland <harry.wentland@amd.com>
Cc: Vegard Nossum <vegard.nossum@oracle.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: linux-mm@kvack.org

---

Change-Id: I4521f5c764cfaeba2fae79c954925c302c5e3bc0
---
 arch/Kconfig                        |  2 +-
 arch/x86/Kconfig                    |  1 +
 arch/x86/Kconfig.debug              |  3 +++
 crypto/Kconfig                      | 26 ++++++++++++++++++++++++++
 drivers/gpu/drm/amd/display/Kconfig |  2 +-
 lib/Kconfig.debug                   |  3 +++
 6 files changed, 35 insertions(+), 2 deletions(-)

Comments

Qian Cai Oct. 30, 2019, 2:34 p.m. UTC | #1
On Wed, 2019-10-30 at 15:22 +0100, glider@google.com wrote:
> Certain config options are currently incompatible with KMSAN, disable
> them.

It would be useful to describe the reasons why each option is incompatible with
KMSAN at the moment to make life easier for someone who might want to fix some
of them in the future.

> 
> Signed-off-by: Alexander Potapenko <glider@google.com>
> Acked-by: Harry Wentland <harry.wentland@amd.com>
> To: Alexander Potapenko <glider@google.com>
> Cc: Herbert Xu <herbert@gondor.apana.org.au>
> Cc: Harry Wentland <harry.wentland@amd.com>
> Cc: Vegard Nossum <vegard.nossum@oracle.com>
> Cc: Dmitry Vyukov <dvyukov@google.com>
> Cc: linux-mm@kvack.org
> 
> ---
> 
> Change-Id: I4521f5c764cfaeba2fae79c954925c302c5e3bc0
> ---
>  arch/Kconfig                        |  2 +-
>  arch/x86/Kconfig                    |  1 +
>  arch/x86/Kconfig.debug              |  3 +++
>  crypto/Kconfig                      | 26 ++++++++++++++++++++++++++
>  drivers/gpu/drm/amd/display/Kconfig |  2 +-
>  lib/Kconfig.debug                   |  3 +++
>  6 files changed, 35 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 5f8a5d84dbbe..d5ca838ae8ad 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -843,7 +843,7 @@ config HAVE_ARCH_VMAP_STACK
>  config VMAP_STACK
>  	default y
>  	bool "Use a virtually-mapped stack"
> -	depends on HAVE_ARCH_VMAP_STACK && !KASAN
> +	depends on HAVE_ARCH_VMAP_STACK && !KASAN && !KMSAN
>  	---help---
>  	  Enable this if you want the use virtually-mapped kernel stacks
>  	  with guard pages.  This causes kernel stack overflows to be
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 3f83a5c53808..6d2b0fb3a871 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -2143,6 +2143,7 @@ config RELOCATABLE
>  config RANDOMIZE_BASE
>  	bool "Randomize the address of the kernel image (KASLR)"
>  	depends on RELOCATABLE
> +	depends on !KMSAN
>  	default y
>  	---help---
>  	  In support of Kernel Address Space Layout Randomization (KASLR),
> diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
> index bf9cd83de777..db3cd6147829 100644
> --- a/arch/x86/Kconfig.debug
> +++ b/arch/x86/Kconfig.debug
> @@ -292,6 +292,9 @@ choice
>  config UNWINDER_ORC
>  	bool "ORC unwinder"
>  	depends on X86_64
> +	# KMSAN doesn't support UNWINDER_ORC yet,
> +	# see https://github.com/google/kmsan/issues/48.
> +	depends on !KMSAN
>  	select STACK_VALIDATION
>  	---help---
>  	  This option enables the ORC (Oops Rewind Capability) unwinder for
> diff --git a/crypto/Kconfig b/crypto/Kconfig
> index 9e524044d312..37a22711012c 100644
> --- a/crypto/Kconfig
> +++ b/crypto/Kconfig
> @@ -309,11 +309,13 @@ config CRYPTO_AEGIS128
>  config CRYPTO_AEGIS128_SIMD
>  	bool "Support SIMD acceleration for AEGIS-128"
>  	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
> +	depends on !KMSAN
>  	default y
>  
>  config CRYPTO_AEGIS128_AESNI_SSE2
>  	tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_AEAD
>  	select CRYPTO_SIMD
>  	help
> @@ -571,6 +573,7 @@ config CRYPTO_CRC32C
>  config CRYPTO_CRC32C_INTEL
>  	tristate "CRC32c INTEL hardware acceleration"
>  	depends on X86
> +	depends on !KMSAN
>  	select CRYPTO_HASH
>  	help
>  	  In Intel processor with SSE4.2 supported, the processor will
> @@ -611,6 +614,7 @@ config CRYPTO_CRC32
>  config CRYPTO_CRC32_PCLMUL
>  	tristate "CRC32 PCLMULQDQ hardware acceleration"
>  	depends on X86
> +	depends on !KMSAN
>  	select CRYPTO_HASH
>  	select CRC32
>  	help
> @@ -649,6 +653,7 @@ config CRYPTO_CRCT10DIF
>  config CRYPTO_CRCT10DIF_PCLMUL
>  	tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
>  	depends on X86 && 64BIT && CRC_T10DIF
> +	depends on !KMSAN
>  	select CRYPTO_HASH
>  	help
>  	  For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
> @@ -695,6 +700,7 @@ config CRYPTO_POLY1305
>  config CRYPTO_POLY1305_X86_64
>  	tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_POLY1305
>  	help
>  	  Poly1305 authenticator algorithm, RFC7539.
> @@ -814,6 +820,7 @@ config CRYPTO_SHA1
>  config CRYPTO_SHA1_SSSE3
>  	tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_SHA1
>  	select CRYPTO_HASH
>  	help
> @@ -825,6 +832,7 @@ config CRYPTO_SHA1_SSSE3
>  config CRYPTO_SHA256_SSSE3
>  	tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_SHA256
>  	select CRYPTO_HASH
>  	help
> @@ -837,6 +845,7 @@ config CRYPTO_SHA256_SSSE3
>  config CRYPTO_SHA512_SSSE3
>  	tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_SHA512
>  	select CRYPTO_HASH
>  	help
> @@ -1011,6 +1020,7 @@ config CRYPTO_WP512
>  config CRYPTO_GHASH_CLMUL_NI_INTEL
>  	tristate "GHASH hash function (CLMUL-NI accelerated)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_CRYPTD
>  	help
>  	  This is the x86_64 CLMUL-NI accelerated implementation of
> @@ -1064,6 +1074,7 @@ config CRYPTO_AES_TI
>  config CRYPTO_AES_NI_INTEL
>  	tristate "AES cipher algorithms (AES-NI)"
>  	depends on X86
> +	depends on !KMSAN
>  	select CRYPTO_AEAD
>  	select CRYPTO_LIB_AES
>  	select CRYPTO_ALGAPI
> @@ -1190,6 +1201,7 @@ config CRYPTO_BLOWFISH_COMMON
>  config CRYPTO_BLOWFISH_X86_64
>  	tristate "Blowfish cipher algorithm (x86_64)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_BLOWFISH_COMMON
>  	help
> @@ -1221,6 +1233,7 @@ config CRYPTO_CAMELLIA_X86_64
>  	tristate "Camellia cipher algorithm (x86_64)"
>  	depends on X86 && 64BIT
>  	depends on CRYPTO
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_GLUE_HELPER_X86
>  	help
> @@ -1238,6 +1251,7 @@ config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
>  	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
>  	depends on X86 && 64BIT
>  	depends on CRYPTO
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_CAMELLIA_X86_64
>  	select CRYPTO_GLUE_HELPER_X86
> @@ -1258,6 +1272,7 @@ config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
>  	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
>  	depends on X86 && 64BIT
>  	depends on CRYPTO
> +	depends on !KMSAN
>  	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
>  	help
>  	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
> @@ -1303,6 +1318,7 @@ config CRYPTO_CAST5
>  config CRYPTO_CAST5_AVX_X86_64
>  	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_CAST5
>  	select CRYPTO_CAST_COMMON
> @@ -1325,6 +1341,7 @@ config CRYPTO_CAST6
>  config CRYPTO_CAST6_AVX_X86_64
>  	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_CAST6
>  	select CRYPTO_CAST_COMMON
> @@ -1360,6 +1377,7 @@ config CRYPTO_DES_SPARC64
>  config CRYPTO_DES3_EDE_X86_64
>  	tristate "Triple DES EDE cipher algorithm (x86-64)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_LIB_DES
>  	help
> @@ -1426,6 +1444,7 @@ config CRYPTO_CHACHA20
>  config CRYPTO_CHACHA20_X86_64
>  	tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_CHACHA20
>  	help
> @@ -1462,6 +1481,7 @@ config CRYPTO_SERPENT
>  config CRYPTO_SERPENT_SSE2_X86_64
>  	tristate "Serpent cipher algorithm (x86_64/SSE2)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_GLUE_HELPER_X86
>  	select CRYPTO_SERPENT
> @@ -1481,6 +1501,7 @@ config CRYPTO_SERPENT_SSE2_X86_64
>  config CRYPTO_SERPENT_SSE2_586
>  	tristate "Serpent cipher algorithm (i586/SSE2)"
>  	depends on X86 && !64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_GLUE_HELPER_X86
>  	select CRYPTO_SERPENT
> @@ -1500,6 +1521,7 @@ config CRYPTO_SERPENT_SSE2_586
>  config CRYPTO_SERPENT_AVX_X86_64
>  	tristate "Serpent cipher algorithm (x86_64/AVX)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_GLUE_HELPER_X86
>  	select CRYPTO_SERPENT
> @@ -1520,6 +1542,7 @@ config CRYPTO_SERPENT_AVX_X86_64
>  config CRYPTO_SERPENT_AVX2_X86_64
>  	tristate "Serpent cipher algorithm (x86_64/AVX2)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_SERPENT_AVX_X86_64
>  	help
>  	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
> @@ -1615,6 +1638,7 @@ config CRYPTO_TWOFISH_586
>  config CRYPTO_TWOFISH_X86_64
>  	tristate "Twofish cipher algorithm (x86_64)"
>  	depends on (X86 || UML_X86) && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_ALGAPI
>  	select CRYPTO_TWOFISH_COMMON
>  	help
> @@ -1631,6 +1655,7 @@ config CRYPTO_TWOFISH_X86_64
>  config CRYPTO_TWOFISH_X86_64_3WAY
>  	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_TWOFISH_COMMON
>  	select CRYPTO_TWOFISH_X86_64
> @@ -1652,6 +1677,7 @@ config CRYPTO_TWOFISH_X86_64_3WAY
>  config CRYPTO_TWOFISH_AVX_X86_64
>  	tristate "Twofish cipher algorithm (x86_64/AVX)"
>  	depends on X86 && 64BIT
> +	depends on !KMSAN
>  	select CRYPTO_BLKCIPHER
>  	select CRYPTO_GLUE_HELPER_X86
>  	select CRYPTO_SIMD
> diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig
> index 71991a28a775..99585eaf4dd0 100644
> --- a/drivers/gpu/drm/amd/display/Kconfig
> +++ b/drivers/gpu/drm/amd/display/Kconfig
> @@ -6,7 +6,7 @@ config DRM_AMD_DC
>  	bool "AMD DC - Enable new display engine"
>  	default y
>  	select SND_HDA_COMPONENT if SND_HDA_CORE
> -	select DRM_AMD_DC_DCN1_0 if X86 && !(KCOV_INSTRUMENT_ALL && KCOV_ENABLE_COMPARISONS)
> +	select DRM_AMD_DC_DCN1_0 if X86 && !(KCOV_INSTRUMENT_ALL && KCOV_ENABLE_COMPARISONS) && !KMSAN
>  	help
>  	  Choose this option if you want to use the new display engine
>  	  support for AMDGPU. This adds required support for Vega and
> diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
> index 75c36318943d..a3f6f5d68593 100644
> --- a/lib/Kconfig.debug
> +++ b/lib/Kconfig.debug
> @@ -1068,6 +1068,9 @@ menu "Lock Debugging (spinlocks, mutexes, etc...)"
>  config LOCK_DEBUGGING_SUPPORT
>  	bool
>  	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
> +	# KMSAN is incompatible with lockdep,
> +	# see https://github.com/google/kmsan/issues/57.
> +	depends on !KMSAN
>  	default y
>  
>  config PROVE_LOCKING
Christoph Hellwig Oct. 30, 2019, 2:34 p.m. UTC | #2
On Wed, Oct 30, 2019 at 03:22:26PM +0100, glider@google.com wrote:
> Certain config options are currently incompatible with KMSAN, disable
> them.

This looks like a very random collection.  Please annotate each of them
with a reason why they are incompatible.  Either by adding a comment to
the Kconfig, or by having one commit per incompatible option with a
commit log explaining it.
diff mbox series

Patch

diff --git a/arch/Kconfig b/arch/Kconfig
index 5f8a5d84dbbe..d5ca838ae8ad 100644
--- a/arch/Kconfig
+++ b/arch/Kconfig
@@ -843,7 +843,7 @@  config HAVE_ARCH_VMAP_STACK
 config VMAP_STACK
 	default y
 	bool "Use a virtually-mapped stack"
-	depends on HAVE_ARCH_VMAP_STACK && !KASAN
+	depends on HAVE_ARCH_VMAP_STACK && !KASAN && !KMSAN
 	---help---
 	  Enable this if you want the use virtually-mapped kernel stacks
 	  with guard pages.  This causes kernel stack overflows to be
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 3f83a5c53808..6d2b0fb3a871 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -2143,6 +2143,7 @@  config RELOCATABLE
 config RANDOMIZE_BASE
 	bool "Randomize the address of the kernel image (KASLR)"
 	depends on RELOCATABLE
+	depends on !KMSAN
 	default y
 	---help---
 	  In support of Kernel Address Space Layout Randomization (KASLR),
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index bf9cd83de777..db3cd6147829 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -292,6 +292,9 @@  choice
 config UNWINDER_ORC
 	bool "ORC unwinder"
 	depends on X86_64
+	# KMSAN doesn't support UNWINDER_ORC yet,
+	# see https://github.com/google/kmsan/issues/48.
+	depends on !KMSAN
 	select STACK_VALIDATION
 	---help---
 	  This option enables the ORC (Oops Rewind Capability) unwinder for
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 9e524044d312..37a22711012c 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -309,11 +309,13 @@  config CRYPTO_AEGIS128
 config CRYPTO_AEGIS128_SIMD
 	bool "Support SIMD acceleration for AEGIS-128"
 	depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON)
+	depends on !KMSAN
 	default y
 
 config CRYPTO_AEGIS128_AESNI_SSE2
 	tristate "AEGIS-128 AEAD algorithm (x86_64 AESNI+SSE2 implementation)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_AEAD
 	select CRYPTO_SIMD
 	help
@@ -571,6 +573,7 @@  config CRYPTO_CRC32C
 config CRYPTO_CRC32C_INTEL
 	tristate "CRC32c INTEL hardware acceleration"
 	depends on X86
+	depends on !KMSAN
 	select CRYPTO_HASH
 	help
 	  In Intel processor with SSE4.2 supported, the processor will
@@ -611,6 +614,7 @@  config CRYPTO_CRC32
 config CRYPTO_CRC32_PCLMUL
 	tristate "CRC32 PCLMULQDQ hardware acceleration"
 	depends on X86
+	depends on !KMSAN
 	select CRYPTO_HASH
 	select CRC32
 	help
@@ -649,6 +653,7 @@  config CRYPTO_CRCT10DIF
 config CRYPTO_CRCT10DIF_PCLMUL
 	tristate "CRCT10DIF PCLMULQDQ hardware acceleration"
 	depends on X86 && 64BIT && CRC_T10DIF
+	depends on !KMSAN
 	select CRYPTO_HASH
 	help
 	  For x86_64 processors with SSE4.2 and PCLMULQDQ supported,
@@ -695,6 +700,7 @@  config CRYPTO_POLY1305
 config CRYPTO_POLY1305_X86_64
 	tristate "Poly1305 authenticator algorithm (x86_64/SSE2/AVX2)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_POLY1305
 	help
 	  Poly1305 authenticator algorithm, RFC7539.
@@ -814,6 +820,7 @@  config CRYPTO_SHA1
 config CRYPTO_SHA1_SSSE3
 	tristate "SHA1 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_SHA1
 	select CRYPTO_HASH
 	help
@@ -825,6 +832,7 @@  config CRYPTO_SHA1_SSSE3
 config CRYPTO_SHA256_SSSE3
 	tristate "SHA256 digest algorithm (SSSE3/AVX/AVX2/SHA-NI)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_SHA256
 	select CRYPTO_HASH
 	help
@@ -837,6 +845,7 @@  config CRYPTO_SHA256_SSSE3
 config CRYPTO_SHA512_SSSE3
 	tristate "SHA512 digest algorithm (SSSE3/AVX/AVX2)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_SHA512
 	select CRYPTO_HASH
 	help
@@ -1011,6 +1020,7 @@  config CRYPTO_WP512
 config CRYPTO_GHASH_CLMUL_NI_INTEL
 	tristate "GHASH hash function (CLMUL-NI accelerated)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_CRYPTD
 	help
 	  This is the x86_64 CLMUL-NI accelerated implementation of
@@ -1064,6 +1074,7 @@  config CRYPTO_AES_TI
 config CRYPTO_AES_NI_INTEL
 	tristate "AES cipher algorithms (AES-NI)"
 	depends on X86
+	depends on !KMSAN
 	select CRYPTO_AEAD
 	select CRYPTO_LIB_AES
 	select CRYPTO_ALGAPI
@@ -1190,6 +1201,7 @@  config CRYPTO_BLOWFISH_COMMON
 config CRYPTO_BLOWFISH_X86_64
 	tristate "Blowfish cipher algorithm (x86_64)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_BLOWFISH_COMMON
 	help
@@ -1221,6 +1233,7 @@  config CRYPTO_CAMELLIA_X86_64
 	tristate "Camellia cipher algorithm (x86_64)"
 	depends on X86 && 64BIT
 	depends on CRYPTO
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_GLUE_HELPER_X86
 	help
@@ -1238,6 +1251,7 @@  config CRYPTO_CAMELLIA_AESNI_AVX_X86_64
 	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX)"
 	depends on X86 && 64BIT
 	depends on CRYPTO
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_CAMELLIA_X86_64
 	select CRYPTO_GLUE_HELPER_X86
@@ -1258,6 +1272,7 @@  config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64
 	tristate "Camellia cipher algorithm (x86_64/AES-NI/AVX2)"
 	depends on X86 && 64BIT
 	depends on CRYPTO
+	depends on !KMSAN
 	select CRYPTO_CAMELLIA_AESNI_AVX_X86_64
 	help
 	  Camellia cipher algorithm module (x86_64/AES-NI/AVX2).
@@ -1303,6 +1318,7 @@  config CRYPTO_CAST5
 config CRYPTO_CAST5_AVX_X86_64
 	tristate "CAST5 (CAST-128) cipher algorithm (x86_64/AVX)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_CAST5
 	select CRYPTO_CAST_COMMON
@@ -1325,6 +1341,7 @@  config CRYPTO_CAST6
 config CRYPTO_CAST6_AVX_X86_64
 	tristate "CAST6 (CAST-256) cipher algorithm (x86_64/AVX)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_CAST6
 	select CRYPTO_CAST_COMMON
@@ -1360,6 +1377,7 @@  config CRYPTO_DES_SPARC64
 config CRYPTO_DES3_EDE_X86_64
 	tristate "Triple DES EDE cipher algorithm (x86-64)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_LIB_DES
 	help
@@ -1426,6 +1444,7 @@  config CRYPTO_CHACHA20
 config CRYPTO_CHACHA20_X86_64
 	tristate "ChaCha stream cipher algorithms (x86_64/SSSE3/AVX2/AVX-512VL)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_CHACHA20
 	help
@@ -1462,6 +1481,7 @@  config CRYPTO_SERPENT
 config CRYPTO_SERPENT_SSE2_X86_64
 	tristate "Serpent cipher algorithm (x86_64/SSE2)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_GLUE_HELPER_X86
 	select CRYPTO_SERPENT
@@ -1481,6 +1501,7 @@  config CRYPTO_SERPENT_SSE2_X86_64
 config CRYPTO_SERPENT_SSE2_586
 	tristate "Serpent cipher algorithm (i586/SSE2)"
 	depends on X86 && !64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_GLUE_HELPER_X86
 	select CRYPTO_SERPENT
@@ -1500,6 +1521,7 @@  config CRYPTO_SERPENT_SSE2_586
 config CRYPTO_SERPENT_AVX_X86_64
 	tristate "Serpent cipher algorithm (x86_64/AVX)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_GLUE_HELPER_X86
 	select CRYPTO_SERPENT
@@ -1520,6 +1542,7 @@  config CRYPTO_SERPENT_AVX_X86_64
 config CRYPTO_SERPENT_AVX2_X86_64
 	tristate "Serpent cipher algorithm (x86_64/AVX2)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_SERPENT_AVX_X86_64
 	help
 	  Serpent cipher algorithm, by Anderson, Biham & Knudsen.
@@ -1615,6 +1638,7 @@  config CRYPTO_TWOFISH_586
 config CRYPTO_TWOFISH_X86_64
 	tristate "Twofish cipher algorithm (x86_64)"
 	depends on (X86 || UML_X86) && 64BIT
+	depends on !KMSAN
 	select CRYPTO_ALGAPI
 	select CRYPTO_TWOFISH_COMMON
 	help
@@ -1631,6 +1655,7 @@  config CRYPTO_TWOFISH_X86_64
 config CRYPTO_TWOFISH_X86_64_3WAY
 	tristate "Twofish cipher algorithm (x86_64, 3-way parallel)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_TWOFISH_COMMON
 	select CRYPTO_TWOFISH_X86_64
@@ -1652,6 +1677,7 @@  config CRYPTO_TWOFISH_X86_64_3WAY
 config CRYPTO_TWOFISH_AVX_X86_64
 	tristate "Twofish cipher algorithm (x86_64/AVX)"
 	depends on X86 && 64BIT
+	depends on !KMSAN
 	select CRYPTO_BLKCIPHER
 	select CRYPTO_GLUE_HELPER_X86
 	select CRYPTO_SIMD
diff --git a/drivers/gpu/drm/amd/display/Kconfig b/drivers/gpu/drm/amd/display/Kconfig
index 71991a28a775..99585eaf4dd0 100644
--- a/drivers/gpu/drm/amd/display/Kconfig
+++ b/drivers/gpu/drm/amd/display/Kconfig
@@ -6,7 +6,7 @@  config DRM_AMD_DC
 	bool "AMD DC - Enable new display engine"
 	default y
 	select SND_HDA_COMPONENT if SND_HDA_CORE
-	select DRM_AMD_DC_DCN1_0 if X86 && !(KCOV_INSTRUMENT_ALL && KCOV_ENABLE_COMPARISONS)
+	select DRM_AMD_DC_DCN1_0 if X86 && !(KCOV_INSTRUMENT_ALL && KCOV_ENABLE_COMPARISONS) && !KMSAN
 	help
 	  Choose this option if you want to use the new display engine
 	  support for AMDGPU. This adds required support for Vega and
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 75c36318943d..a3f6f5d68593 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -1068,6 +1068,9 @@  menu "Lock Debugging (spinlocks, mutexes, etc...)"
 config LOCK_DEBUGGING_SUPPORT
 	bool
 	depends on TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT
+	# KMSAN is incompatible with lockdep,
+	# see https://github.com/google/kmsan/issues/57.
+	depends on !KMSAN
 	default y
 
 config PROVE_LOCKING