[PATCH v2] crypto: cryptomgr - Select algorithm types only when CRYPTO_SELFTESTS

From: Eric Biggers

Date: Tue Mar 24 2026 - 01:03:11 EST


Enabling any template selects CRYPTO_MANAGER, which causes
CRYPTO_MANAGER2 to enable itself, which selects every algorithm type
option. However, pulling in all algorithm types is needed only when the
self-tests are enabled. So condition the selections accordingly.

To make this possible, also add the missing selections to various
symbols that were relying on transitive selections via CRYPTO_MANAGER.

Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---

This patch is targeting cryptodev/master

v2: add selections to options that were relying on transitive selection

crypto/Kconfig | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/crypto/Kconfig b/crypto/Kconfig
index e2b4106ac961..209a040c74bf 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -155,18 +155,18 @@ config CRYPTO_MANAGER
This provides the support for instantiating templates such as
cbc(aes), and the support for the crypto self-tests.

config CRYPTO_MANAGER2
def_tristate CRYPTO_MANAGER || (CRYPTO_MANAGER!=n && CRYPTO_ALGAPI=y)
- select CRYPTO_ACOMP2
- select CRYPTO_AEAD2
- select CRYPTO_AKCIPHER2
- select CRYPTO_SIG2
- select CRYPTO_HASH2
- select CRYPTO_KPP2
- select CRYPTO_RNG2
- select CRYPTO_SKCIPHER2
+ select CRYPTO_ACOMP2 if CRYPTO_SELFTESTS
+ select CRYPTO_AEAD2 if CRYPTO_SELFTESTS
+ select CRYPTO_AKCIPHER2 if CRYPTO_SELFTESTS
+ select CRYPTO_SIG2 if CRYPTO_SELFTESTS
+ select CRYPTO_HASH2 if CRYPTO_SELFTESTS
+ select CRYPTO_KPP2 if CRYPTO_SELFTESTS
+ select CRYPTO_RNG2 if CRYPTO_SELFTESTS
+ select CRYPTO_SKCIPHER2 if CRYPTO_SELFTESTS

config CRYPTO_USER
tristate "Userspace cryptographic algorithm configuration"
depends on NET
select CRYPTO_MANAGER
@@ -222,10 +222,11 @@ config CRYPTO_PCRYPT
This converts an arbitrary crypto algorithm into a parallel
algorithm that executes in kernel threads.

config CRYPTO_CRYPTD
tristate "Software async crypto daemon"
+ select CRYPTO_AEAD
select CRYPTO_SKCIPHER
select CRYPTO_HASH
select CRYPTO_MANAGER
help
This is a generic software asynchronous crypto daemon that
@@ -255,24 +256,33 @@ config CRYPTO_KRB5ENC
sunrpc/NFS and rxrpc/AFS.

config CRYPTO_BENCHMARK
tristate "Crypto benchmarking module"
depends on m || EXPERT
+ select CRYPTO_AEAD
+ select CRYPTO_HASH
select CRYPTO_MANAGER
+ select CRYPTO_SKCIPHER
help
Quick & dirty crypto benchmarking module.

This is mainly intended for use by people developing cryptographic
algorithms in the kernel. It should not be enabled in production
kernels.

config CRYPTO_SIMD
tristate
+ select CRYPTO_AEAD
select CRYPTO_CRYPTD

config CRYPTO_ENGINE
tristate
+ select CRYPTO_AEAD
+ select CRYPTO_AKCIPHER
+ select CRYPTO_HASH
+ select CRYPTO_KPP
+ select CRYPTO_SKCIPHER

endmenu

menu "Public-key cryptography"

base-commit: f9bbd547cfb98b1c5e535aab9b0671a2ff22453a
--
2.53.0