Skip to content

Commit 1047e21

Browse files
committed
crypto: lib/Kconfig - Fix lib built-in failure when arch is modular
The HAVE_ARCH Kconfig options in lib/crypto try to solve the modular versus built-in problem, but it still fails when the the LIB option (e.g., CRYPTO_LIB_CURVE25519) is selected externally. Fix this by introducing a level of indirection with ARCH_MAY_HAVE Kconfig options, these then go on to select the ARCH_HAVE options if the ARCH Kconfig options matches that of the LIB option. Reported-by: kernel test robot <[email protected]> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ Signed-off-by: Herbert Xu <[email protected]>
1 parent 3af4e7f commit 1047e21

File tree

4 files changed

+26
-16
lines changed

4 files changed

+26
-16
lines changed

arch/arm/crypto/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ config CRYPTO_CURVE25519_NEON
66
tristate "Public key crypto: Curve25519 (NEON)"
77
depends on KERNEL_MODE_NEON
88
select CRYPTO_LIB_CURVE25519_GENERIC
9-
select CRYPTO_ARCH_HAVE_LIB_CURVE25519
9+
select CRYPTO_ARCH_MAY_HAVE_LIB_CURVE25519
1010
help
1111
Curve25519 algorithm
1212

@@ -47,7 +47,7 @@ config CRYPTO_NHPOLY1305_NEON
4747
config CRYPTO_POLY1305_ARM
4848
tristate "Hash functions: Poly1305 (NEON)"
4949
select CRYPTO_HASH
50-
select CRYPTO_ARCH_HAVE_LIB_POLY1305
50+
select CRYPTO_ARCH_MAY_HAVE_LIB_POLY1305
5151
help
5252
Poly1305 authenticator algorithm (RFC7539)
5353

@@ -214,7 +214,7 @@ config CRYPTO_AES_ARM_CE
214214
config CRYPTO_CHACHA20_NEON
215215
tristate "Ciphers: ChaCha20, XChaCha20, XChaCha12 (NEON)"
216216
select CRYPTO_SKCIPHER
217-
select CRYPTO_ARCH_HAVE_LIB_CHACHA
217+
select CRYPTO_ARCH_MAY_HAVE_LIB_CHACHA
218218
help
219219
Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
220220
stream cipher algorithms

arch/powerpc/crypto/Kconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ config CRYPTO_CURVE25519_PPC64
66
tristate "Public key crypto: Curve25519 (PowerPC64)"
77
depends on PPC64 && CPU_LITTLE_ENDIAN
88
select CRYPTO_LIB_CURVE25519_GENERIC
9-
select CRYPTO_ARCH_HAVE_LIB_CURVE25519
9+
select CRYPTO_ARCH_MAY_HAVE_LIB_CURVE25519
1010
help
1111
Curve25519 algorithm
1212

@@ -95,7 +95,7 @@ config CRYPTO_CHACHA20_P10
9595
depends on PPC64 && CPU_LITTLE_ENDIAN && VSX
9696
select CRYPTO_SKCIPHER
9797
select CRYPTO_LIB_CHACHA_GENERIC
98-
select CRYPTO_ARCH_HAVE_LIB_CHACHA
98+
select CRYPTO_ARCH_MAY_HAVE_LIB_CHACHA
9999
help
100100
Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
101101
stream cipher algorithms

arch/x86/crypto/Kconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ config CRYPTO_CURVE25519_X86
66
tristate "Public key crypto: Curve25519 (ADX)"
77
depends on X86 && 64BIT
88
select CRYPTO_LIB_CURVE25519_GENERIC
9-
select CRYPTO_ARCH_HAVE_LIB_CURVE25519
9+
select CRYPTO_ARCH_MAY_HAVE_LIB_CURVE25519
1010
help
1111
Curve25519 algorithm
1212

@@ -352,7 +352,7 @@ config CRYPTO_CHACHA20_X86_64
352352
depends on X86 && 64BIT
353353
select CRYPTO_SKCIPHER
354354
select CRYPTO_LIB_CHACHA_GENERIC
355-
select CRYPTO_ARCH_HAVE_LIB_CHACHA
355+
select CRYPTO_ARCH_MAY_HAVE_LIB_CHACHA
356356
help
357357
Length-preserving ciphers: ChaCha20, XChaCha20, and XChaCha12
358358
stream cipher algorithms
@@ -420,7 +420,7 @@ config CRYPTO_POLY1305_X86_64
420420
tristate "Hash functions: Poly1305 (SSE2/AVX2)"
421421
depends on X86 && 64BIT
422422
select CRYPTO_LIB_POLY1305_GENERIC
423-
select CRYPTO_ARCH_HAVE_LIB_POLY1305
423+
select CRYPTO_ARCH_MAY_HAVE_LIB_POLY1305
424424
help
425425
Poly1305 authenticator algorithm (RFC7539)
426426

lib/crypto/Kconfig

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,17 @@ config CRYPTO_LIB_BLAKE2S_GENERIC
4242
of CRYPTO_LIB_BLAKE2S.
4343

4444
config CRYPTO_ARCH_HAVE_LIB_CHACHA
45-
tristate
45+
bool
4646
help
4747
Declares whether the architecture provides an arch-specific
4848
accelerated implementation of the ChaCha library interface,
4949
either builtin or as a module.
5050

51+
config CRYPTO_ARCH_MAY_HAVE_LIB_CHACHA
52+
tristate
53+
select CRYPTO_ARCH_HAVE_LIB_CHACHA if CRYPTO_LIB_CHACHA=m
54+
select CRYPTO_ARCH_HAVE_LIB_CHACHA if CRYPTO_ARCH_MAY_HAVE_LIB_CHACHA=y
55+
5156
config CRYPTO_LIB_CHACHA_GENERIC
5257
tristate
5358
select CRYPTO_LIB_UTILS
@@ -60,20 +65,24 @@ config CRYPTO_LIB_CHACHA_GENERIC
6065

6166
config CRYPTO_LIB_CHACHA
6267
tristate "ChaCha library interface"
63-
depends on CRYPTO_ARCH_HAVE_LIB_CHACHA || !CRYPTO_ARCH_HAVE_LIB_CHACHA
6468
select CRYPTO_LIB_CHACHA_GENERIC if CRYPTO_ARCH_HAVE_LIB_CHACHA=n
6569
help
6670
Enable the ChaCha library interface. This interface may be fulfilled
6771
by either the generic implementation or an arch-specific one, if one
6872
is available and enabled.
6973

7074
config CRYPTO_ARCH_HAVE_LIB_CURVE25519
71-
tristate
75+
bool
7276
help
7377
Declares whether the architecture provides an arch-specific
7478
accelerated implementation of the Curve25519 library interface,
7579
either builtin or as a module.
7680

81+
config CRYPTO_ARCH_MAY_HAVE_LIB_CURVE25519
82+
tristate
83+
select CRYPTO_ARCH_HAVE_LIB_CURVE25519 if CRYPTO_LIB_CURVE25519=m
84+
select CRYPTO_ARCH_HAVE_LIB_CURVE25519 if CRYPTO_ARCH_MAY_HAVE_LIB_CURVE25519=y
85+
7786
config CRYPTO_LIB_CURVE25519_GENERIC
7887
tristate
7988
help
@@ -85,7 +94,6 @@ config CRYPTO_LIB_CURVE25519_GENERIC
8594

8695
config CRYPTO_LIB_CURVE25519
8796
tristate "Curve25519 scalar multiplication library"
88-
depends on CRYPTO_ARCH_HAVE_LIB_CURVE25519 || !CRYPTO_ARCH_HAVE_LIB_CURVE25519
8997
select CRYPTO_LIB_CURVE25519_GENERIC if CRYPTO_ARCH_HAVE_LIB_CURVE25519=n
9098
select CRYPTO_LIB_UTILS
9199
help
@@ -104,12 +112,17 @@ config CRYPTO_LIB_POLY1305_RSIZE
104112
default 1
105113

106114
config CRYPTO_ARCH_HAVE_LIB_POLY1305
107-
tristate
115+
bool
108116
help
109117
Declares whether the architecture provides an arch-specific
110118
accelerated implementation of the Poly1305 library interface,
111119
either builtin or as a module.
112120

121+
config CRYPTO_ARCH_MAY_HAVE_LIB_POLY1305
122+
tristate
123+
select CRYPTO_ARCH_HAVE_LIB_POLY1305 if CRYPTO_LIB_POLY1305=m
124+
select CRYPTO_ARCH_HAVE_LIB_POLY1305 if CRYPTO_ARCH_MAY_HAVE_LIB_POLY1305=y
125+
113126
config CRYPTO_LIB_POLY1305_GENERIC
114127
tristate
115128
help
@@ -121,7 +134,6 @@ config CRYPTO_LIB_POLY1305_GENERIC
121134

122135
config CRYPTO_LIB_POLY1305
123136
tristate "Poly1305 library interface"
124-
depends on CRYPTO_ARCH_HAVE_LIB_POLY1305 || !CRYPTO_ARCH_HAVE_LIB_POLY1305
125137
select CRYPTO_LIB_POLY1305_GENERIC if CRYPTO_ARCH_HAVE_LIB_POLY1305=n
126138
help
127139
Enable the Poly1305 library interface. This interface may be fulfilled
@@ -130,8 +142,6 @@ config CRYPTO_LIB_POLY1305
130142

131143
config CRYPTO_LIB_CHACHA20POLY1305
132144
tristate "ChaCha20-Poly1305 AEAD support (8-byte nonce library version)"
133-
depends on CRYPTO_ARCH_HAVE_LIB_CHACHA || !CRYPTO_ARCH_HAVE_LIB_CHACHA
134-
depends on CRYPTO_ARCH_HAVE_LIB_POLY1305 || !CRYPTO_ARCH_HAVE_LIB_POLY1305
135145
depends on CRYPTO
136146
select CRYPTO_LIB_CHACHA
137147
select CRYPTO_LIB_POLY1305

0 commit comments

Comments
 (0)