Lines Matching +full:exact +full:- +full:len

1 // SPDX-License-Identifier: GPL-2.0-or-later
45 return try_module_get(alg->cra_module) ? crypto_alg_get(alg) : NULL; in crypto_mod_get()
51 struct module *module = alg->cra_module; in crypto_mod_put()
62 int best = -2; in __crypto_alg_lookup()
65 int exact, fuzzy; in __crypto_alg_lookup() local
70 if ((q->cra_flags ^ type) & mask) in __crypto_alg_lookup()
73 exact = !strcmp(q->cra_driver_name, name); in __crypto_alg_lookup()
74 fuzzy = !strcmp(q->cra_name, name); in __crypto_alg_lookup()
75 if (!exact && !(fuzzy && q->cra_priority > best)) in __crypto_alg_lookup()
81 best = q->cra_priority; in __crypto_alg_lookup()
86 if (exact) in __crypto_alg_lookup()
98 if (!IS_ERR_OR_NULL(larval->adult)) in crypto_larval_destroy()
99 crypto_mod_put(larval->adult); in crypto_larval_destroy()
109 return ERR_PTR(-ENOMEM); in crypto_larval_alloc()
113 larval->mask = mask; in crypto_larval_alloc()
114 larval->alg.cra_flags = CRYPTO_ALG_LARVAL | type; in crypto_larval_alloc()
115 larval->alg.cra_priority = -1; in crypto_larval_alloc()
116 larval->alg.cra_destroy = crypto_larval_destroy; in crypto_larval_alloc()
118 strscpy(larval->alg.cra_name, name, CRYPTO_MAX_ALG_NAME); in crypto_larval_alloc()
119 init_completion(&larval->completion); in crypto_larval_alloc()
135 refcount_set(&larval->alg.cra_refcnt, 2); in crypto_larval_add()
140 alg = &larval->alg; in crypto_larval_add()
141 list_add(&alg->cra_list, &crypto_alg_list); in crypto_larval_add()
145 if (alg != &larval->alg) { in crypto_larval_add()
159 unlinked = list_empty(&larval->alg.cra_list); in crypto_larval_kill()
161 list_del_init(&larval->alg.cra_list); in crypto_larval_kill()
167 complete_all(&larval->completion); in crypto_larval_kill()
168 crypto_alg_put(&larval->alg); in crypto_larval_kill()
175 err = crypto_probing_notify(CRYPTO_MSG_ALG_REGISTER, larval->adult); in crypto_schedule_test()
185 if (larval->test_started) in crypto_start_test()
189 if (larval->test_started) { in crypto_start_test()
194 larval->test_started = true; in crypto_start_test()
212 &larval->completion, 60 * HZ); in crypto_larval_wait()
214 alg = larval->adult; in crypto_larval_wait()
216 alg = ERR_PTR(-EINTR); in crypto_larval_wait()
220 alg = ERR_PTR(-ETIMEDOUT); in crypto_larval_wait()
225 alg = &larval->alg; in crypto_larval_wait()
226 type = alg->cra_flags & ~(CRYPTO_ALG_LARVAL | CRYPTO_ALG_DEAD); in crypto_larval_wait()
227 mask = larval->mask; in crypto_larval_wait()
228 alg = crypto_alg_lookup(alg->cra_name, type, mask) ?: in crypto_larval_wait()
229 ERR_PTR(-EAGAIN); in crypto_larval_wait()
233 !(alg->cra_flags & CRYPTO_ALG_TESTED)) in crypto_larval_wait()
234 alg = ERR_PTR(-EAGAIN); in crypto_larval_wait()
235 else if (alg->cra_flags & CRYPTO_ALG_FIPS_INTERNAL) in crypto_larval_wait()
236 alg = ERR_PTR(-EAGAIN); in crypto_larval_wait()
238 alg = ERR_PTR(-EAGAIN); in crypto_larval_wait()
239 crypto_mod_put(&larval->alg); in crypto_larval_wait()
266 ((type ^ alg->cra_flags) & mask)) { in crypto_alg_lookup()
269 alg = ERR_PTR(-ENOENT); in crypto_alg_lookup()
276 alg = ERR_PTR(-ELIBBAD); in crypto_alg_lookup()
290 return ERR_PTR(-ENOENT); in crypto_larval_lookup()
297 request_module("crypto-%s", name); in crypto_larval_lookup()
301 request_module("crypto-%s-all", name); in crypto_larval_lookup()
313 alg = ERR_PTR(-ENOENT); in crypto_larval_lookup()
358 alg = ERR_PTR(-ENOENT); in crypto_alg_mod_lookup()
367 const struct crypto_type *type = tfm->__crt_alg->cra_type; in crypto_exit_ops()
369 if (type && tfm->exit) in crypto_exit_ops()
370 tfm->exit(tfm); in crypto_exit_ops()
375 const struct crypto_type *type_obj = alg->cra_type; in crypto_ctxsize()
376 unsigned int len; in crypto_ctxsize() local
378 len = alg->cra_alignmask & ~(crypto_tfm_ctx_alignment() - 1); in crypto_ctxsize()
380 return len + type_obj->ctxsize(alg, type, mask); in crypto_ctxsize()
382 switch (alg->cra_flags & CRYPTO_ALG_TYPE_MASK) { in crypto_ctxsize()
387 len += crypto_cipher_ctxsize(alg); in crypto_ctxsize()
391 len += crypto_compress_ctxsize(alg); in crypto_ctxsize()
395 return len; in crypto_ctxsize()
401 alg->cra_flags |= CRYPTO_ALG_DYING; in crypto_shoot_alg()
411 int err = -ENOMEM; in __crypto_alloc_tfmgfp()
418 tfm->__crt_alg = alg; in __crypto_alloc_tfmgfp()
419 refcount_set(&tfm->refcnt, 1); in __crypto_alloc_tfmgfp()
421 if (!tfm->exit && alg->cra_init && (err = alg->cra_init(tfm))) in __crypto_alloc_tfmgfp()
428 if (err == -EAGAIN) in __crypto_alloc_tfmgfp()
446 * crypto_alloc_base - Locate algorithm and allocate transform
461 * The returned transform is of a non-determinate type. Most people
489 if (err != -EAGAIN) in crypto_alloc_base()
492 err = -EINTR; in crypto_alloc_base()
510 tfmsize = frontend->tfmsize; in crypto_alloc_tfmmem()
511 total = tfmsize + sizeof(*tfm) + frontend->extsize(alg); in crypto_alloc_tfmmem()
515 return ERR_PTR(-ENOMEM); in crypto_alloc_tfmmem()
518 tfm->__crt_alg = alg; in crypto_alloc_tfmmem()
519 tfm->node = node; in crypto_alloc_tfmmem()
520 refcount_set(&tfm->refcnt, 1); in crypto_alloc_tfmmem()
537 tfm = (struct crypto_tfm *)(mem + frontend->tfmsize); in crypto_create_tfm_node()
539 err = frontend->init_tfm(tfm); in crypto_create_tfm_node()
543 if (!tfm->exit && alg->cra_init && (err = alg->cra_init(tfm))) in crypto_create_tfm_node()
551 if (err == -EAGAIN) in crypto_create_tfm_node()
563 struct crypto_alg *alg = otfm->__crt_alg; in crypto_clone_tfm()
567 mem = ERR_PTR(-ESTALE); in crypto_clone_tfm()
571 mem = crypto_alloc_tfmmem(alg, frontend, otfm->node, GFP_ATOMIC); in crypto_clone_tfm()
577 tfm = (struct crypto_tfm *)(mem + frontend->tfmsize); in crypto_clone_tfm()
578 tfm->crt_flags = otfm->crt_flags; in crypto_clone_tfm()
579 tfm->exit = otfm->exit; in crypto_clone_tfm()
591 type &= frontend->maskclear; in crypto_find_alg()
592 mask &= frontend->maskclear; in crypto_find_alg()
593 type |= frontend->type; in crypto_find_alg()
594 mask |= frontend->maskset; in crypto_find_alg()
602 * crypto_alloc_tfm_node - Locate algorithm and allocate transform
617 * The returned transform is of a non-determinate type. Most people
648 if (err != -EAGAIN) in crypto_alloc_tfm_node()
651 err = -EINTR; in crypto_alloc_tfm_node()
661 * crypto_destroy_tfm - Free crypto transform
675 if (!refcount_dec_and_test(&tfm->refcnt)) in crypto_destroy_tfm()
677 alg = tfm->__crt_alg; in crypto_destroy_tfm()
679 if (!tfm->exit && alg->cra_exit) in crypto_destroy_tfm()
680 alg->cra_exit(tfm); in crypto_destroy_tfm()
705 if (err == -EINPROGRESS) in crypto_req_done()
708 wait->err = err; in crypto_req_done()
709 complete(&wait->completion); in crypto_req_done()