x86: crypto: kmsan: revert !KMSAN dependencies
Subsystems (3)
PATCH 1/2 x86: crypto: kmsan: revert !KMSAN dependencies
This patch reverts "crypto: Kconfig: fix up for "crypto: kmsan: disable accelerated configs under KMSAN" used by Stephen Rothwell to cleanly merge KMSAN patches into linux-next.
Because now arch-specific crypto configs reside in a separate Kconfig file, we can disable them all by adding a single !KMSAN before including that file (done in the following patch).
Among others, this patch reverts !KMSAN check for CONFIG_CRYPTO_AEGIS128_SIMD, which is ARM-only and is hence unnecessary, because KMSAN does not support ARM yet.
--- arch/x86/crypto/Kconfig | 29 ----------------------------- crypto/Kconfig | 1 - 2 files changed, 30 deletions(-)
arch/x86/crypto/Kconfig +0 -29
@@ -5,7 +5,6 @@ menu "Accelerated Cryptographic Algorithms for CPU (x86)" config CRYPTO_CURVE25519_X86 tristate "Public key crypto: Curve25519 (ADX)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_LIB_CURVE25519_GENERIC select CRYPTO_ARCH_HAVE_LIB_CURVE25519 help
@@ -17,7 +16,6 @@ config CRYPTO_CURVE25519_X86 config CRYPTO_AES_NI_INTEL tristate "Ciphers: AES, modes: ECB, CBC, CTS, CTR, XTR, XTS, GCM (AES-NI)" depends on X86 - depends on !KMSAN # avoid false positives from assembly select CRYPTO_AEAD select CRYPTO_LIB_AES select CRYPTO_ALGAPI
@@ -34,7 +32,6 @@ config CRYPTO_AES_NI_INTEL config CRYPTO_BLOWFISH_X86_64 tristate "Ciphers: Blowfish, modes: ECB, CBC" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_BLOWFISH_COMMON imply CRYPTO_CTR
@@ -47,7 +44,6 @@ config CRYPTO_BLOWFISH_X86_64 config CRYPTO_CAMELLIA_X86_64 tristate "Ciphers: Camellia with modes: ECB, CBC" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER imply CRYPTO_CTR help
@@ -59,7 +55,6 @@ config CRYPTO_CAMELLIA_X86_64 config CRYPTO_CAMELLIA_AESNI_AVX_X86_64 tristate "Ciphers: Camellia with modes: ECB, CBC (AES-NI/AVX)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_CAMELLIA_X86_64 select CRYPTO_SIMD
@@ -74,7 +69,6 @@ config CRYPTO_CAMELLIA_AESNI_AVX_X86_64 config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 tristate "Ciphers: Camellia with modes: ECB, CBC (AES-NI/AVX2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_CAMELLIA_AESNI_AVX_X86_64 help Length-preserving ciphers: Camellia with ECB and CBC modes
@@ -86,7 +80,6 @@ config CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 config CRYPTO_CAST5_AVX_X86_64 tristate "Ciphers: CAST5 with modes: ECB, CBC (AVX)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_CAST5 select CRYPTO_CAST_COMMON
@@ -104,7 +97,6 @@ config CRYPTO_CAST5_AVX_X86_64 config CRYPTO_CAST6_AVX_X86_64 tristate "Ciphers: CAST6 with modes: ECB, CBC (AVX)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_CAST6 select CRYPTO_CAST_COMMON
@@ -123,7 +115,6 @@ config CRYPTO_CAST6_AVX_X86_64 config CRYPTO_DES3_EDE_X86_64 tristate "Ciphers: Triple DES EDE with modes: ECB, CBC" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_LIB_DES imply CRYPTO_CTR
@@ -138,7 +129,6 @@ config CRYPTO_DES3_EDE_X86_64 config CRYPTO_SERPENT_SSE2_X86_64 tristate "Ciphers: Serpent with modes: ECB, CBC (SSE2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_SERPENT select CRYPTO_SIMD
@@ -155,7 +145,6 @@ config CRYPTO_SERPENT_SSE2_X86_64 config CRYPTO_SERPENT_SSE2_586 tristate "Ciphers: Serpent with modes: ECB, CBC (32-bit with SSE2)" depends on X86 && !64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_SERPENT select CRYPTO_SIMD
@@ -172,7 +161,6 @@ config CRYPTO_SERPENT_SSE2_586 config CRYPTO_SERPENT_AVX_X86_64 tristate "Ciphers: Serpent with modes: ECB, CBC (AVX)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_SERPENT select CRYPTO_SIMD
@@ -190,7 +178,6 @@ config CRYPTO_SERPENT_AVX_X86_64 config CRYPTO_SERPENT_AVX2_X86_64 tristate "Ciphers: Serpent with modes: ECB, CBC (AVX2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SERPENT_AVX_X86_64 help Length-preserving ciphers: Serpent cipher algorithm
@@ -258,7 +245,6 @@ config CRYPTO_TWOFISH_586 config CRYPTO_TWOFISH_X86_64 tristate "Ciphers: Twofish" depends on (X86 || UML_X86) && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_ALGAPI select CRYPTO_TWOFISH_COMMON imply CRYPTO_CTR
@@ -270,7 +256,6 @@ config CRYPTO_TWOFISH_X86_64 config CRYPTO_TWOFISH_X86_64_3WAY tristate "Ciphers: Twofish with modes: ECB, CBC (3-way parallel)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_TWOFISH_COMMON select CRYPTO_TWOFISH_X86_64
@@ -286,7 +271,6 @@ config CRYPTO_TWOFISH_X86_64_3WAY config CRYPTO_TWOFISH_AVX_X86_64 tristate "Ciphers: Twofish with modes: ECB, CBC (AVX)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_SIMD select CRYPTO_TWOFISH_COMMON
@@ -305,7 +289,6 @@ config CRYPTO_TWOFISH_AVX_X86_64 config CRYPTO_CHACHA20_X86_64 tristate "Ciphers: ChaCha20, XChaCha20, XChaCha12 (SSSE3/AVX2/AVX-512VL)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SKCIPHER select CRYPTO_LIB_CHACHA_GENERIC select CRYPTO_ARCH_HAVE_LIB_CHACHA
@@ -321,7 +304,6 @@ config CRYPTO_CHACHA20_X86_64 config CRYPTO_AEGIS128_AESNI_SSE2 tristate "AEAD ciphers: AEGIS-128 (AES-NI/SSE2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_AEAD select CRYPTO_SIMD help
@@ -334,7 +316,6 @@ config CRYPTO_AEGIS128_AESNI_SSE2 config CRYPTO_NHPOLY1305_SSE2 tristate "Hash functions: NHPoly1305 (SSE2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_NHPOLY1305 help NHPoly1305 hash function for Adiantum
@@ -345,7 +326,6 @@ config CRYPTO_NHPOLY1305_SSE2 config CRYPTO_NHPOLY1305_AVX2 tristate "Hash functions: NHPoly1305 (AVX2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_NHPOLY1305 help NHPoly1305 hash function for Adiantum
@@ -356,7 +336,6 @@ config CRYPTO_NHPOLY1305_AVX2 config CRYPTO_BLAKE2S_X86 bool "Hash functions: BLAKE2s (SSSE3/AVX-512)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_LIB_BLAKE2S_GENERIC select CRYPTO_ARCH_HAVE_LIB_BLAKE2S help
@@ -379,7 +358,6 @@ config CRYPTO_POLYVAL_CLMUL_NI config CRYPTO_POLY1305_X86_64 tristate "Hash functions: Poly1305 (SSE2/AVX2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_LIB_POLY1305_GENERIC select CRYPTO_ARCH_HAVE_LIB_POLY1305 help
@@ -392,7 +370,6 @@ config CRYPTO_POLY1305_X86_64 config CRYPTO_SHA1_SSSE3 tristate "Hash functions: SHA-1 (SSSE3/AVX/AVX2/SHA-NI)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SHA1 select CRYPTO_HASH help
@@ -407,7 +384,6 @@ config CRYPTO_SHA1_SSSE3 config CRYPTO_SHA256_SSSE3 tristate "Hash functions: SHA-224 and SHA-256 (SSSE3/AVX/AVX2/SHA-NI)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SHA256 select CRYPTO_HASH help
@@ -422,7 +398,6 @@ config CRYPTO_SHA256_SSSE3 config CRYPTO_SHA512_SSSE3 tristate "Hash functions: SHA-384 and SHA-512 (SSSE3/AVX/AVX2)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_SHA512 select CRYPTO_HASH help
@@ -449,7 +424,6 @@ config CRYPTO_SM3_AVX_X86_64 config CRYPTO_GHASH_CLMUL_NI_INTEL tristate "Hash functions: GHASH (CLMUL-NI)" depends on X86 && 64BIT - depends on !KMSAN # avoid false positives from assembly select CRYPTO_CRYPTD help GCM GHASH hash function (NIST SP800-38D)
@@ -460,7 +434,6 @@ config CRYPTO_GHASH_CLMUL_NI_INTEL config CRYPTO_CRC32C_INTEL tristate "CRC32c (SSE4.2/PCLMULQDQ)" depends on X86 - depends on !KMSAN # avoid false positives from assembly select CRYPTO_HASH help CRC32c CRC algorithm with the iSCSI polynomial (RFC 3385 and RFC 3720)
@@ -472,7 +445,6 @@ config CRYPTO_CRC32C_INTEL config CRYPTO_CRC32_PCLMUL tristate "CRC32 (PCLMULQDQ)" depends on X86 - depends on !KMSAN # avoid false positives from assembly select CRYPTO_HASH select CRC32 help
@@ -484,7 +456,6 @@ config CRYPTO_CRC32_PCLMUL config CRYPTO_CRCT10DIF_PCLMUL tristate "CRCT10DIF (PCLMULQDQ)" depends on X86 && 64BIT && CRC_T10DIF - depends on !KMSAN # avoid false positives from assembly select CRYPTO_HASH help CRC16 CRC algorithm used for the T10 (SCSI) Data Integrity Field (DIF)
crypto/Kconfig +0 -1
@@ -796,7 +796,6 @@ config CRYPTO_AEGIS128 config CRYPTO_AEGIS128_SIMD bool "AEGIS-128 (arm NEON, arm64 NEON)" depends on CRYPTO_AEGIS128 && ((ARM || ARM64) && KERNEL_MODE_NEON) - depends on !KMSAN # avoid false positives from assembly default y help AEGIS-128 AEAD algorithm
Signature · 1 line
2.37.2.789.g6183377224-goog
PATCH 2/2 crypto: x86: kmsan: disable accelerated configs in KMSAN builds
KMSAN is unable to understand when initialized values come from assembly. Disable accelerated configs in KMSAN builds to prevent false positive reports.
--- crypto/Kconfig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
crypto/Kconfig +3 -1
@@ -1430,7 +1430,9 @@ endif if SPARC source "arch/sparc/crypto/Kconfig" endif -if X86 +# KMSAN is unable to understand when initialized values come from assembly. +# Disable accelerated configs to prevent false positive reports. +if X86 && !KMSAN source "arch/x86/crypto/Kconfig" endif
Signature · 1 line
2.37.2.789.g6183377224-goog
Re: [PATCH -next 2/2] crypto: x86: kmsan: disable accelerated configs in KMSAN builds
Hi Stephen,
Please use this patch to replace "crypto: x86: kmsan: disable accelerated configs in KMSAN builds" when merging linux-mm into linux-next (assuming arch/x86/crypto/Kconfig is still in -next).
Quoted 36 lines · Alexander Potapenko
KMSAN is unable to understand when initialized values come from assembly. Disable accelerated configs in KMSAN builds to prevent false positive reports.
Signed-off-by Alexander Potapenko <[email protected]>Cc Andrew Morton <[email protected]>Cc Eric Biggers <[email protected]>Cc Herbert Xu <[email protected]>Cc Robert Elliott <[email protected]>Cc Stephen Rothwell <[email protected]>--- crypto/Kconfig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)crypto/Kconfig +3
-2@@ -1430,7 +1430,9 @@ endif if SPARC source "arch/sparc/crypto/Kconfig" endif -if X86 +# KMSAN is unable to understand when initialized values come from assembly. +# Disable accelerated configs to prevent false positive reports. +if X86 && !KMSAN source "arch/x86/crypto/Kconfig" endif --2.37.2.789.g6183377224-goog
Signature · 10 lines
Alexander Potapenko Software Engineer Google Germany GmbH Erika-Mann-Straße, 33 80636 München Geschäftsführer: Paul Manicle, Liana Sebastian Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg
Re: [PATCH -next 2/2] crypto: x86: kmsan: disable accelerated configs in KMSAN builds
Hi Alexander,
Quoted 4 lines · On Fri, 16 Sep 2022 11:23:47 +0200 Alexander Potapenko <[email protected]>…
Please use this patch to replace "crypto: x86: kmsan: disable accelerated configs in KMSAN builds" when merging linux-mm into linux-next (assuming
arch/x86/crypto/Kconfigis still in -next).
OK, will do from today.
Signature · 2 lines
Cheers, Stephen Rothwell
Quoted 11 lines · On Fri, 9 Sep 2022 11:58:10 +0200 Alexander Potapenko <[email protected]>…
This patch reverts "crypto:
Kconfig: fix up for "crypto: kmsan: disable accelerated configs under KMSAN" used by Stephen Rothwell to cleanly merge KMSAN patches into linux-next.Because now arch-specific crypto configs reside in a separate
Kconfigfile, we can disable them all by adding a single !KMSAN before including that file (done in the following patch).Among others, this patch reverts !KMSAN check for
CONFIG_CRYPTO_AEGIS128_SIMD, which is ARM-only and is hence unnecessary, because KMSAN does not support ARM yet.
As I understand it, these patches are against linux-next and only linux-next because they pertain to linux-next's resolution of conflicts between the MM tree and the crypto tree?
I'm not sure how to handle that, even if anyone wants to. How about you send an update togit://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm's mm-unstable branch so the code which is there makes sense? Then we'll ask Stephen to redo the crypto tree resolution?
Quoted 11 lines · Andrew Morton
Quoted 8 lines · On Fri, 9 Sep 2022 11:58:10 +0200 Alexander Potapenko <[email protected]>…
This patch reverts "crypto:
Kconfig: fix up for "crypto: kmsan: disable accelerated configs under KMSAN" used by Stephen Rothwell to cleanly merge KMSAN patches into linux-next.Because now arch-specific crypto configs reside in a separate
Kconfigfile, we can disable them all by adding a single !KMSAN before including that file (done in the following patch).
Quoted 7 lines
Quoted 3 lines
Among others, this patch reverts !KMSAN check for
CONFIG_CRYPTO_AEGIS128_SIMD, which is ARM-only and is hence unnecessary, because KMSAN does not support ARM yet.As I understand it, these patches are against linux-next and only linux-next because they pertain to linux-next's resolution of conflicts between the MM tree and the crypto tree?
The thing is that this patch only makes sense with its counterpart that adds a !KMSAN condition on "source arch/x86/crypto/Kconfig", and the latter file is missing in the -mm tree.
Quoted 5 lines
I'm not sure how to handle that, even if anyone wants to. How about you send an update to
git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm'smm-unstable branch so the code which is there makes sense? Then we'll ask Stephen to redo the crypto tree resolution?
Because the crypto tree is moving code crypto/Kconfig to arch/x86/crypto/Kconfig, we'll still need to apply these two patches to the result of the crypto tree merge.
I was going to send out the updated patch series anyway (there are minor improvements to the core which let us drop "kmsan: unpoison @tlb in arch_tlb_gather_mmu()", also there's a new test case).
I could drop "crypto: kmsan: disable accelerated configs under KMSAN" from it, so that it would be possible to enable accelerated configs under KMSAN at the cost of false positives (which are only visible if one builds with KMSAN).
Then, once arch/x86/crypto/Kconfig hits -mm, I can send the remaining patch that disables accelerated crypto under KMSAN:
https://lore.kernel.org/all/[email protected]/
Or I could just send v7 patches against mm-unstable and ask Stephen to apply both https://lore.kernel.org/all/[email protected]/
and https://lore.kernel.org/all/[email protected]/
at merge time.
Which option is better?
--
Alexander Potapenko
Software Engineer
Google Germany GmbH
Erika-Mann-Straße, 33
80636 München
Geschäftsführer: Paul Manicle, Liana Sebastian
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg