Lines Matching refs:larval

96 	struct crypto_larval *larval = (void *)alg;  in crypto_larval_destroy()  local
99 if (!IS_ERR_OR_NULL(larval->adult)) in crypto_larval_destroy()
100 crypto_mod_put(larval->adult); in crypto_larval_destroy()
101 kfree(larval); in crypto_larval_destroy()
106 struct crypto_larval *larval; in crypto_larval_alloc() local
108 larval = kzalloc(sizeof(*larval), GFP_KERNEL); in crypto_larval_alloc()
109 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()
155 static void crypto_larval_kill(struct crypto_larval *larval) in crypto_larval_kill() argument
160 unlinked = list_empty(&larval->alg.cra_list); in crypto_larval_kill()
162 list_del_init(&larval->alg.cra_list); in crypto_larval_kill()
168 complete_all(&larval->completion); in crypto_larval_kill()
169 crypto_alg_put(&larval->alg); in crypto_larval_kill()
172 void crypto_schedule_test(struct crypto_larval *larval) in crypto_schedule_test() argument
176 err = crypto_probing_notify(CRYPTO_MSG_ALG_REGISTER, larval->adult); in crypto_schedule_test()
181 static void crypto_start_test(struct crypto_larval *larval) in crypto_start_test() argument
183 if (!crypto_is_test_larval(larval)) in crypto_start_test()
186 if (larval->test_started) in crypto_start_test()
190 if (larval->test_started) { in crypto_start_test()
195 larval->test_started = true; in crypto_start_test()
198 crypto_schedule_test(larval); in crypto_start_test()
204 struct crypto_larval *larval; in crypto_larval_wait() local
208 larval = container_of(alg, struct crypto_larval, alg); in crypto_larval_wait()
211 crypto_start_test(larval); in crypto_larval_wait()
214 &larval->completion, 60 * HZ); in crypto_larval_wait()
216 alg = larval->adult; in crypto_larval_wait()
220 if (crypto_is_test_larval(larval)) in crypto_larval_wait()
221 crypto_larval_kill(larval); in crypto_larval_wait()
224 alg = &larval->alg; in crypto_larval_wait()
229 else if (crypto_is_test_larval(larval) && in crypto_larval_wait()
236 crypto_mod_put(&larval->alg); in crypto_larval_wait()
332 struct crypto_alg *larval; in crypto_alg_mod_lookup() local
345 larval = crypto_larval_lookup(name, type, mask); in crypto_alg_mod_lookup()
346 if (IS_ERR(larval) || !crypto_is_larval(larval)) in crypto_alg_mod_lookup()
347 return larval; in crypto_alg_mod_lookup()
349 ok = crypto_probing_notify(CRYPTO_MSG_ALG_REQUEST, larval); in crypto_alg_mod_lookup()
352 alg = crypto_larval_wait(larval, type, mask); in crypto_alg_mod_lookup()
354 crypto_mod_put(larval); in crypto_alg_mod_lookup()
357 crypto_larval_kill(container_of(larval, struct crypto_larval, alg)); in crypto_alg_mod_lookup()