Lines Matching +full:i +full:- +full:leak +full:- +full:current

1 // SPDX-License-Identifier: GPL-2.0-only
10 * for the module having completed its self-tests and integrity check.
13 * algorithm types that have a strongly-typed initialization function pointer
36 * fips140-defs.h so that the "fips140_" prefix doesn't automatically get added.
62 #include "fips140-module.h"
64 /* Indicates whether the self-tests and integrity check have completed */
67 /* The thread running the self-tests and integrity check */
73 * Note: unregistering an algorithm will leak its map entry, as we don't bother
97 * invocation is from that thread or not by checking 'current'. in fips140_wait_until_ready()
99 if (current == fips140_init_thread) in fips140_wait_until_ready()
103 alg->cra_driver_name); in fips140_wait_until_ready()
105 pr_info("tests done, allowing %s to proceed\n", alg->cra_driver_name); in fips140_wait_until_ready()
114 * The XArray API requires 4-byte aligned values. Although function in fips140_store_init_function()
115 * pointers in general aren't guaranteed to be 4-byte aligned, it should in fips140_store_init_function()
119 return -EINVAL; in fips140_store_init_function()
136 struct crypto_alg *alg = tfm->__crt_alg; in fips140_alg_init_tfm()
141 WRITE_ONCE(alg->cra_init, cra_init); in fips140_alg_init_tfm()
149 fips140_load_init_function(&alg->base); in fips140_aead_init_tfm()
151 if (fips140_wait_until_ready(&alg->base)) in fips140_aead_init_tfm()
152 WRITE_ONCE(alg->init, init); in fips140_aead_init_tfm()
161 fips140_load_init_function(&halg->base); in fips140_ahash_init_tfm()
163 if (fips140_wait_until_ready(&halg->base)) in fips140_ahash_init_tfm()
164 WRITE_ONCE(alg->init_tfm, init_tfm); in fips140_ahash_init_tfm()
172 fips140_load_init_function(&alg->base); in fips140_shash_init_tfm()
174 if (fips140_wait_until_ready(&alg->base)) in fips140_shash_init_tfm()
175 WRITE_ONCE(alg->init_tfm, init_tfm); in fips140_shash_init_tfm()
183 fips140_load_init_function(&alg->base); in fips140_skcipher_init_tfm()
185 if (fips140_wait_until_ready(&alg->base)) in fips140_skcipher_init_tfm()
186 WRITE_ONCE(alg->init, init); in fips140_skcipher_init_tfm()
196 if (!fips140_ready() && alg->field != wrapper_func) { \
197 err = fips140_store_init_function(base_alg, alg->field);\
199 alg->field = wrapper_func; \
208 * rng that don't have a strongly-typed initialization function. in fips140_prepare_alg()
215 return prepare_alg(alg, &alg->base, init, fips140_aead_init_tfm); in fips140_prepare_aead_alg()
220 return prepare_alg(alg, &alg->halg.base, init_tfm, in fips140_prepare_ahash_alg()
227 * rng doesn't have a strongly-typed initialization function, so we must in fips140_prepare_rng_alg()
230 return fips140_prepare_alg(&alg->base); in fips140_prepare_rng_alg()
235 return prepare_alg(alg, &alg->base, init_tfm, fips140_shash_init_tfm); in fips140_prepare_shash_alg()
240 return prepare_alg(alg, &alg->base, init, fips140_skcipher_init_tfm); in fips140_prepare_skcipher_alg()
279 return fips140_prepare_aead_alg(&inst->alg) ?: in fips140_aead_register_instance()
286 return fips140_prepare_ahash_alg(&inst->alg) ?: in fips140_ahash_register_instance()
293 return fips140_prepare_shash_alg(&inst->alg) ?: in fips140_shash_register_instance()
300 return fips140_prepare_skcipher_alg(&inst->alg) ?: in fips140_skcipher_register_instance()
308 int i; in fips140_crypto_register_algs() local
311 for (i = 0; i < count; i++) { in fips140_crypto_register_algs()
312 err = fips140_prepare_alg(&algs[i]); in fips140_crypto_register_algs()
322 int i; in fips140_crypto_register_aeads() local
325 for (i = 0; i < count; i++) { in fips140_crypto_register_aeads()
326 err = fips140_prepare_aead_alg(&algs[i]); in fips140_crypto_register_aeads()
336 int i; in fips140_crypto_register_ahashes() local
339 for (i = 0; i < count; i++) { in fips140_crypto_register_ahashes()
340 err = fips140_prepare_ahash_alg(&algs[i]); in fips140_crypto_register_ahashes()
350 int i; in fips140_crypto_register_rngs() local
353 for (i = 0; i < count; i++) { in fips140_crypto_register_rngs()
354 err = fips140_prepare_rng_alg(&algs[i]); in fips140_crypto_register_rngs()
364 int i; in fips140_crypto_register_shashes() local
367 for (i = 0; i < count; i++) { in fips140_crypto_register_shashes()
368 err = fips140_prepare_shash_alg(&algs[i]); in fips140_crypto_register_shashes()
378 int i; in fips140_crypto_register_skciphers() local
381 for (i = 0; i < count; i++) { in fips140_crypto_register_skciphers()
382 err = fips140_prepare_skcipher_alg(&algs[i]); in fips140_crypto_register_skciphers()