Skip to content

Commit 34197b7

Browse files
committed
kernel-src/wolfcrypt_glue.c: refactor wc_linuxkm_drbg_init_ctx() and wc_linuxkm_drbg_ctx_clear() to use wc_rng_bank_default_checkout() and wc_rng_bank_default_checkin() when defined(WC_RNG_BANK_DEFAULT_SUPPORT).
1 parent 09553d9 commit 34197b7

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

kernel-src/wolfcrypt_glue.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -827,6 +827,12 @@ int wc_linuxkm_drbg_init_ctx(struct wc_rng_bank **ctx) {
827827

828828
#ifdef LINUXKM_LKCAPI_REGISTER_HASH_DRBG_DEFAULT
829829

830+
#ifdef WC_RNG_BANK_DEFAULT_SUPPORT
831+
ret = wc_rng_bank_default_checkout(ctx);
832+
833+
if (ret != 0)
834+
goto new_bank;
835+
#else /* !WC_RNG_BANK_DEFAULT_SUPPORT */
830836
struct crypto_rng *current_crypto_default_rng;
831837

832838
ret = crypto_get_default_rng();
@@ -846,6 +852,8 @@ int wc_linuxkm_drbg_init_ctx(struct wc_rng_bank **ctx) {
846852
}
847853

848854
*ctx = (struct wc_rng_bank *)crypto_rng_ctx(current_crypto_default_rng);
855+
#endif /* !WC_RNG_BANK_DEFAULT_SUPPORT */
856+
849857
wc_wg_drbg_is_global_default = 1;
850858

851859
return 0;
@@ -886,9 +894,15 @@ void wc_linuxkm_drbg_ctx_clear(struct wc_rng_bank **ctx) {
886894

887895
#ifdef LINUXKM_LKCAPI_REGISTER_HASH_DRBG_DEFAULT
888896
if (wc_wg_drbg_is_global_default) {
897+
#ifdef WC_RNG_BANK_DEFAULT_SUPPORT
898+
int ret = wc_rng_bank_default_checkin(ctx);
899+
if (ret != 0)
900+
pr_err("ERROR: wc_rng_bank_default_checkin() in wc_linuxkm_drbg_ctx_clear() failed with code %d.\n", ret);
901+
#else /* !WC_RNG_BANK_DEFAULT_SUPPORT */
889902
*ctx = NULL;
890-
wc_wg_drbg_is_global_default = 0;
891903
crypto_put_default_rng();
904+
#endif /* !WC_RNG_BANK_DEFAULT_SUPPORT */
905+
wc_wg_drbg_is_global_default = 0;
892906
}
893907
else
894908
#endif

0 commit comments

Comments
 (0)