Lines Matching refs:larval

95 	struct crypto_larval *larval = (void *)alg;  in crypto_larval_destroy()  local
98 if (!IS_ERR_OR_NULL(larval->adult)) in crypto_larval_destroy()
99 crypto_mod_put(larval->adult); in crypto_larval_destroy()
100 kfree(larval); in crypto_larval_destroy()
105 struct crypto_larval *larval; in crypto_larval_alloc() local
107 larval = kzalloc(sizeof(*larval), GFP_KERNEL); in crypto_larval_alloc()
108 if (!larval) 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()
121 return larval; in crypto_larval_alloc()
129 struct crypto_larval *larval; in crypto_larval_add() local
131 larval = crypto_larval_alloc(name, type, mask); in crypto_larval_add()
132 if (IS_ERR(larval)) in crypto_larval_add()
133 return ERR_CAST(larval); in crypto_larval_add()
135 refcount_set(&larval->alg.cra_refcnt, 2); in crypto_larval_add()
140 alg = &larval->alg; in crypto_larval_add()
145 if (alg != &larval->alg) { in crypto_larval_add()
146 kfree(larval); in crypto_larval_add()
154 static void crypto_larval_kill(struct crypto_larval *larval) in crypto_larval_kill() argument
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()
171 void crypto_schedule_test(struct crypto_larval *larval) in crypto_schedule_test() argument
175 err = crypto_probing_notify(CRYPTO_MSG_ALG_REGISTER, larval->adult); in crypto_schedule_test()
180 static void crypto_start_test(struct crypto_larval *larval) in crypto_start_test() argument
182 if (!crypto_is_test_larval(larval)) in crypto_start_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()
197 crypto_schedule_test(larval); in crypto_start_test()
203 struct crypto_larval *larval; in crypto_larval_wait() local
207 larval = container_of(alg, struct crypto_larval, alg); in crypto_larval_wait()
210 crypto_start_test(larval); in crypto_larval_wait()
213 &larval->completion, 60 * HZ); in crypto_larval_wait()
215 alg = larval->adult; in crypto_larval_wait()
219 if (crypto_is_test_larval(larval)) in crypto_larval_wait()
220 crypto_larval_kill(larval); in crypto_larval_wait()
232 alg = &larval->alg; in crypto_larval_wait()
237 else if (crypto_is_test_larval(larval) && in crypto_larval_wait()
244 crypto_mod_put(&larval->alg); in crypto_larval_wait()
340 struct crypto_alg *larval; in crypto_alg_mod_lookup() local
353 larval = crypto_larval_lookup(name, type, mask); in crypto_alg_mod_lookup()
354 if (IS_ERR(larval) || !crypto_is_larval(larval)) in crypto_alg_mod_lookup()
355 return larval; in crypto_alg_mod_lookup()
357 ok = crypto_probing_notify(CRYPTO_MSG_ALG_REQUEST, larval); in crypto_alg_mod_lookup()
360 alg = crypto_larval_wait(larval, type, mask); in crypto_alg_mod_lookup()
362 crypto_mod_put(larval); in crypto_alg_mod_lookup()
365 crypto_larval_kill(container_of(larval, struct crypto_larval, alg)); in crypto_alg_mod_lookup()