Skip to content

Commit 15fcf70

Browse files
committed
linuxkm/lkcapi_{dh,ecdh,ecdsa,rsa,aes}_glue.c: when LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG, don't "#error Config conflict" if explicit LINUXKM_LKCAPI_DONT_REGISTER_foo is defined for the missing algorithm.
1 parent dc0fe80 commit 15fcf70

File tree

5 files changed

+26
-12
lines changed

5 files changed

+26
-12
lines changed

linuxkm/lkcapi_aes_glue.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@
121121
#define LINUXKM_LKCAPI_REGISTER_AESCBC
122122
#endif
123123
#else
124-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_CBC)
124+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_CBC) && \
125+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_AESCBC)
125126
#error Config conflict: target kernel has CONFIG_CRYPTO_CBC, but module is missing HAVE_AES_CBC.
126127
#endif
127128
#undef LINUXKM_LKCAPI_REGISTER_AESCBC
@@ -151,7 +152,8 @@
151152
#define LINUXKM_LKCAPI_REGISTER_AESGCM_RFC4106
152153
#endif
153154
#else
154-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_GCM)
155+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_GCM) && \
156+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_AESGCM)
155157
#error Config conflict: target kernel has CONFIG_CRYPTO_GCM, but module is missing HAVE_AESGCM.
156158
#endif
157159
#undef LINUXKM_LKCAPI_REGISTER_AESGCM
@@ -166,8 +168,9 @@
166168
#define LINUXKM_LKCAPI_REGISTER_AESXTS
167169
#endif
168170
#else
169-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_XTS)
170-
#error Config conflict: target kernel has CONFIG_CRYPTO_GCM, but module is missing WOLFSSL_AES_XTS.
171+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_XTS) && \
172+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_AESXTS)
173+
#error Config conflict: target kernel has CONFIG_CRYPTO_XTS, but module is missing WOLFSSL_AES_XTS.
171174
#endif
172175
#undef LINUXKM_LKCAPI_REGISTER_AESXTS
173176
#endif
@@ -180,7 +183,8 @@
180183
#define LINUXKM_LKCAPI_REGISTER_AESCTR
181184
#endif
182185
#else
183-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_CTR)
186+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_CTR) && \
187+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_AESCTR)
184188
#error Config conflict: target kernel has CONFIG_CRYPTO_CTR, but module is missing WOLFSSL_AES_COUNTER.
185189
#endif
186190
#undef LINUXKM_LKCAPI_REGISTER_AESCTR
@@ -204,7 +208,8 @@
204208
#define LINUXKM_LKCAPI_REGISTER_AESECB
205209
#endif
206210
#else
207-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_ECB)
211+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_ECB) && \
212+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_AESECB)
208213
#error Config conflict: target kernel has CONFIG_CRYPTO_ECB, but module is missing HAVE_AES_ECB.
209214
#endif
210215
#undef LINUXKM_LKCAPI_REGISTER_AESECB

linuxkm/lkcapi_dh_glue.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@
5858
#undef LINUXKM_LKCAPI_REGISTER_DH
5959
#endif
6060

61-
#if LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0)
61+
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 18, 0)) && \
62+
!(defined(RHEL_MAJOR) && \
63+
((RHEL_MAJOR > 9) || ((RHEL_MAJOR == 9) && (RHEL_MINOR >= 5))))
64+
6265
/* Support for FFDHE was added in kernel 5.18, and generic DH support
6366
* pre-5.18 used a different binary format for the secret (an additional
6467
* slot for q).
@@ -73,7 +76,8 @@
7376

7477
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && \
7578
(defined(CONFIG_CRYPTO_DH) || defined(CONFIG_CRYPTO_DH_RFC7919_GROUPS)) && \
76-
!defined(LINUXKM_LKCAPI_REGISTER_DH)
79+
!defined(LINUXKM_LKCAPI_REGISTER_DH) && \
80+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_DH)
7781
#error Config conflict: target kernel has CONFIG_CRYPTO_DH and/or \
7882
_DH_RFC7919_GROUPS, but module is missing LINUXKM_LKCAPI_REGISTER_DH.
7983
#endif

linuxkm/lkcapi_ecdh_glue.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,16 @@
4343
/* currently incompatible with kernel 5.12 or earlier. */
4444
#undef LINUXKM_LKCAPI_REGISTER_ECDH
4545

46-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_ECDH)
46+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_ECDH) && \
47+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_ECDH)
4748
#error Config conflict: missing implementation forces off LINUXKM_LKCAPI_REGISTER_ECDH.
4849
#endif
4950
#endif
5051
#endif
5152

5253
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && \
5354
defined(CONFIG_CRYPTO_ECDH) && \
55+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_ECDH) && \
5456
!defined(LINUXKM_LKCAPI_REGISTER_ECDH)
5557
#error Config conflict: target kernel has CONFIG_CRYPTO_ECDH, but module is missing LINUXKM_LKCAPI_REGISTER_ECDH.
5658
#endif

linuxkm/lkcapi_ecdsa_glue.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,15 @@
6464
#undef LINUXKM_LKCAPI_REGISTER_ECDSA
6565
#endif /* LINUXKM_LKCAPI_REGISTER_ECDSA */
6666

67-
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_ECDSA)
67+
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && defined(CONFIG_CRYPTO_ECDSA) && \
68+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_ECDSA)
6869
#error Config conflict: missing implementation forces off LINUXKM_LKCAPI_REGISTER_ECDSA.
6970
#endif
7071
#endif
7172

7273
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && \
7374
defined(CONFIG_CRYPTO_ECDSA) && \
75+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_ECDSA) && \
7476
!defined(LINUXKM_LKCAPI_REGISTER_ECDSA)
7577
#error Config conflict: target kernel has CONFIG_CRYPTO_ECDSA, but module is missing LINUXKM_LKCAPI_REGISTER_ECDSA.
7678
#endif

linuxkm/lkcapi_rsa_glue.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,16 @@
6363

6464
#if defined(LINUXKM_LKCAPI_REGISTER_ALL_KCONFIG) && \
6565
defined(CONFIG_CRYPTO_RSA) && \
66-
!defined(LINUXKM_LKCAPI_REGISTER_RSA)
66+
!defined(LINUXKM_LKCAPI_REGISTER_RSA) && \
67+
!defined(LINUXKM_LKCAPI_DONT_REGISTER_RSA)
6768
#error Config conflict: target kernel has CONFIG_CRYPTO_RSA, but module is missing LINUXKM_LKCAPI_REGISTER_RSA.
6869
#endif
6970

7071
#ifdef LINUXKM_LKCAPI_REGISTER_RSA
7172

7273
#if defined(WOLFSSL_RSA_VERIFY_ONLY) || \
7374
defined(WOLFSSL_RSA_PUBLIC_ONLY)
74-
#error LINUXKM_LKCAPI_REGISTER_RSA and RSA_VERIFY_ONLY not supported
75+
#error LINUXKM_LKCAPI_REGISTER_RSA with RSA_VERIFY_ONLY/WOLFSSL_RSA_PUBLIC_ONLY not supported
7576
#endif /* WOLFSSL_RSA_VERIFY_ONLY || WOLFSSL_RSA_PUBLIC_ONLY */
7677

7778
#ifdef WC_RSA_NO_PADDING

0 commit comments

Comments
 (0)