]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
lib/crypto: arm/curve25519: Disable on CPU_BIG_ENDIAN
authorEric Biggers <ebiggers@kernel.org>
Tue, 4 Nov 2025 05:49:06 +0000 (21:49 -0800)
committerEric Biggers <ebiggers@kernel.org>
Tue, 4 Nov 2025 17:36:22 +0000 (09:36 -0800)
On big endian arm kernels, the arm optimized Curve25519 code produces
incorrect outputs and fails the Curve25519 test.  This has been true
ever since this code was added.

It seems that hardly anyone (or even no one?) actually uses big endian
arm kernels.  But as long as they're ostensibly supported, we should
disable this code on them so that it's not accidentally used.

Note: for future-proofing, use !CPU_BIG_ENDIAN instead of
CPU_LITTLE_ENDIAN.  Both of these are arch-specific options that could
get removed in the future if big endian support gets dropped.

Fixes: d8f1308a025f ("crypto: arm/curve25519 - wire up NEON implementation")
Cc: stable@vger.kernel.org
Acked-by: Ard Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20251104054906.716914-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@kernel.org>
lib/crypto/Kconfig

index 8886055e938f2fb92c03e0798fd3c433a19cade0..16859c6226dd4b5825bf9448093faf02098ca305 100644 (file)
@@ -64,7 +64,7 @@ config CRYPTO_LIB_CURVE25519
 config CRYPTO_LIB_CURVE25519_ARCH
        bool
        depends on CRYPTO_LIB_CURVE25519 && !UML && !KMSAN
-       default y if ARM && KERNEL_MODE_NEON
+       default y if ARM && KERNEL_MODE_NEON && !CPU_BIG_ENDIAN
        default y if PPC64 && CPU_LITTLE_ENDIAN
        default y if X86_64