Lines Matching refs:larval
98 struct crypto_larval *larval = (void *)alg; in crypto_larval_destroy() local
101 if (!IS_ERR_OR_NULL(larval->adult)) in crypto_larval_destroy()
102 crypto_mod_put(larval->adult); in crypto_larval_destroy()
103 kfree(larval); in crypto_larval_destroy()
108 struct crypto_larval *larval; in crypto_larval_alloc() local
110 larval = kzalloc(sizeof(*larval), GFP_KERNEL); in crypto_larval_alloc()
111 if (!larval) in crypto_larval_alloc()
114 larval->mask = mask; in crypto_larval_alloc()
115 larval->alg.cra_flags = CRYPTO_ALG_LARVAL | type; in crypto_larval_alloc()
116 larval->alg.cra_priority = -1; in crypto_larval_alloc()
117 larval->alg.cra_destroy = crypto_larval_destroy; in crypto_larval_alloc()
119 strscpy(larval->alg.cra_name, name, CRYPTO_MAX_ALG_NAME); in crypto_larval_alloc()
120 init_completion(&larval->completion); in crypto_larval_alloc()
122 return larval; in crypto_larval_alloc()
130 struct crypto_larval *larval; in crypto_larval_add() local
132 larval = crypto_larval_alloc(name, type, mask); in crypto_larval_add()
133 if (IS_ERR(larval)) in crypto_larval_add()
134 return ERR_CAST(larval); in crypto_larval_add()
136 refcount_set(&larval->alg.cra_refcnt, 2); in crypto_larval_add()
141 alg = &larval->alg; in crypto_larval_add()
146 if (alg != &larval->alg) { in crypto_larval_add()
147 kfree(larval); in crypto_larval_add()
157 struct crypto_larval *larval = (void *)alg; in crypto_larval_kill() local
162 complete_all(&larval->completion); in crypto_larval_kill()
167 void crypto_wait_for_test(struct crypto_larval *larval) in crypto_wait_for_test() argument
171 err = crypto_probing_notify(CRYPTO_MSG_ALG_REGISTER, larval->adult); in crypto_wait_for_test()
175 err = wait_for_completion_killable(&larval->completion); in crypto_wait_for_test()
178 crypto_larval_kill(&larval->alg); in crypto_wait_for_test()
182 static void crypto_start_test(struct crypto_larval *larval) in crypto_start_test() argument
184 if (!crypto_is_test_larval(larval)) in crypto_start_test()
187 if (larval->test_started) in crypto_start_test()
191 if (larval->test_started) { in crypto_start_test()
196 larval->test_started = true; in crypto_start_test()
199 crypto_wait_for_test(larval); in crypto_start_test()
204 struct crypto_larval *larval = (void *)alg; in crypto_larval_wait() local
208 crypto_start_test(larval); in crypto_larval_wait()
211 &larval->completion, 60 * HZ); in crypto_larval_wait()
213 alg = larval->adult; in crypto_larval_wait()
222 else if (crypto_is_test_larval(larval) && in crypto_larval_wait()
229 crypto_mod_put(&larval->alg); in crypto_larval_wait()
318 struct crypto_alg *larval; in crypto_alg_mod_lookup() local
331 larval = crypto_larval_lookup(name, type, mask); in crypto_alg_mod_lookup()
332 if (IS_ERR(larval) || !crypto_is_larval(larval)) in crypto_alg_mod_lookup()
333 return larval; in crypto_alg_mod_lookup()
335 ok = crypto_probing_notify(CRYPTO_MSG_ALG_REQUEST, larval); in crypto_alg_mod_lookup()
338 alg = crypto_larval_wait(larval); in crypto_alg_mod_lookup()
340 crypto_mod_put(larval); in crypto_alg_mod_lookup()
343 crypto_larval_kill(larval); in crypto_alg_mod_lookup()