• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/crypto/

Lines Matching refs:alg

31 	struct crypto_alg *alg;
33 alg = crypto_alg_lookup(name, type, mask);
35 if (alg) {
36 if (crypto_is_larval(alg)) {
37 struct crypto_larval *larval = (void *)alg;
40 crypto_mod_put(alg);
45 static inline int crypto_set_driver_name(struct crypto_alg *alg)
48 char *driver_name = alg->cra_driver_name;
54 len = strlcpy(driver_name, alg->cra_name, CRYPTO_MAX_ALG_NAME);
62 static int crypto_check_alg(struct crypto_alg *alg)
64 if (alg->cra_alignmask & (alg->cra_alignmask + 1))
67 if (alg->cra_blocksize > PAGE_SIZE / 8)
70 if (alg->cra_priority < 0)
73 return crypto_set_driver_name(alg);
76 static void crypto_destroy_instance(struct crypto_alg *alg)
78 struct crypto_instance *inst = (void *)alg;
85 static struct list_head *crypto_more_spawns(struct crypto_alg *alg,
98 if (spawn->alg && &n->list != stack && !n->alg)
99 n->alg = (n->list.next == stack) ? alg :
101 list)->inst->alg;
105 return &n->list == stack ? top : &n->inst->alg.cra_users;
114 if (crypto_is_dead(&inst->alg))
117 inst->alg.cra_flags |= CRYPTO_ALG_DEAD;
124 crypto_notify(CRYPTO_MSG_ALG_UNREGISTER, &inst->alg);
125 list_move(&inst->alg.cra_list, list);
127 inst->alg.cra_destroy = crypto_destroy_instance;
129 BUG_ON(!list_empty(&inst->alg.cra_users));
132 static void crypto_remove_spawns(struct crypto_alg *alg,
136 u32 new_type = (nalg ?: alg)->cra_flags;
143 spawns = &alg->cra_users;
145 if ((spawn->alg->cra_flags ^ new_type) & spawn->mask)
160 BUG_ON(&inst->alg == alg);
164 if (&inst->alg == nalg)
167 spawn->alg = NULL;
168 spawns = &inst->alg.cra_users;
170 } while ((spawns = crypto_more_spawns(alg, &stack, &top,
174 if (spawn->alg)
175 list_move(&spawn->list, &spawn->alg->cra_users);
181 static struct crypto_larval *__crypto_register_alg(struct crypto_alg *alg)
187 if (crypto_is_dead(alg))
190 INIT_LIST_HEAD(&alg->cra_users);
193 alg->cra_flags &= ~CRYPTO_ALG_TESTED;
197 atomic_set(&alg->cra_refcnt, 1);
199 if (q == alg)
206 if (!strcmp(alg->cra_driver_name, q->cra_driver_name))
211 if (!strcmp(q->cra_driver_name, alg->cra_name) ||
212 !strcmp(q->cra_name, alg->cra_driver_name))
216 larval = crypto_larval_alloc(alg->cra_name,
217 alg->cra_flags | CRYPTO_ALG_TESTED, 0);
222 larval->adult = crypto_mod_get(alg);
226 atomic_set(&larval->alg.cra_refcnt, 1);
227 memcpy(larval->alg.cra_driver_name, alg->cra_driver_name,
229 larval->alg.cra_priority = alg->cra_priority;
231 list_add(&alg->cra_list, &crypto_alg_list);
232 list_add(&larval->alg.cra_list, &crypto_alg_list);
247 struct crypto_alg *alg;
262 printk(KERN_ERR "alg: Unexpected test result for %s: %d\n", name, err);
267 alg = test->adult;
268 if (err || list_empty(&alg->cra_list))
271 alg->cra_flags |= CRYPTO_ALG_TESTED;
274 if (q == alg)
288 if (strcmp(alg->cra_name, q->cra_name) &&
289 strcmp(alg->cra_driver_name, q->cra_name))
294 if ((q->cra_flags ^ alg->cra_flags) & larval->mask)
296 if (!crypto_mod_get(alg))
299 larval->adult = alg;
304 if (strcmp(alg->cra_name, q->cra_name))
307 if (strcmp(alg->cra_driver_name, q->cra_driver_name) &&
308 q->cra_priority > alg->cra_priority)
311 crypto_remove_spawns(q, &list, alg);
326 struct crypto_alg *alg;
329 list_for_each_entry_safe(alg, n, list, cra_list) {
330 list_del_init(&alg->cra_list);
331 crypto_alg_put(alg);
343 crypto_alg_tested(larval->alg.cra_driver_name, 0);
350 crypto_larval_kill(&larval->alg);
353 int crypto_register_alg(struct crypto_alg *alg)
358 err = crypto_check_alg(alg);
363 larval = __crypto_register_alg(alg);
374 static int crypto_remove_alg(struct crypto_alg *alg, struct list_head *list)
376 if (unlikely(list_empty(&alg->cra_list)))
379 alg->cra_flags |= CRYPTO_ALG_DEAD;
381 crypto_notify(CRYPTO_MSG_ALG_UNREGISTER, alg);
382 list_del_init(&alg->cra_list);
383 crypto_remove_spawns(alg, list, NULL);
388 int crypto_unregister_alg(struct crypto_alg *alg)
394 ret = crypto_remove_alg(alg, &list);
400 BUG_ON(atomic_read(&alg->cra_refcnt) != 1);
401 if (alg->cra_destroy)
402 alg->cra_destroy(alg);
444 int err = crypto_remove_alg(&inst->alg, &users);
453 BUG_ON(atomic_read(&inst->alg.cra_refcnt) != 1);
491 err = crypto_check_alg(&inst->alg);
495 inst->alg.cra_module = tmpl->module;
499 larval = __crypto_register_alg(&inst->alg);
521 int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg,
530 if (!crypto_is_moribund(alg)) {
531 list_add(&spawn->list, &alg->cra_users);
532 spawn->alg = alg;
541 int crypto_init_spawn2(struct crypto_spawn *spawn, struct crypto_alg *alg,
547 if ((alg->cra_flags ^ frontend->type) & frontend->maskset)
551 err = crypto_init_spawn(spawn, alg, inst, frontend->maskset);
560 if (!spawn->alg)
571 struct crypto_alg *alg;
575 alg = spawn->alg;
576 alg2 = alg;
582 if (alg)
583 crypto_shoot_alg(alg);
587 return alg;
593 struct crypto_alg *alg;
596 alg = crypto_spawn_alg(spawn);
597 if (IS_ERR(alg))
598 return ERR_CAST(alg);
601 if (unlikely((alg->cra_flags ^ type) & mask))
604 tfm = __crypto_alloc_tfm(alg, type, mask);
611 crypto_mod_put(alg);
618 struct crypto_alg *alg;
621 alg = crypto_spawn_alg(spawn);
622 if (IS_ERR(alg))
623 return ERR_CAST(alg);
625 tfm = crypto_create_tfm(alg, spawn->frontend);
632 crypto_mod_put(alg);
734 void *crypto_alloc_instance2(const char *name, struct crypto_alg *alg,
749 if (snprintf(inst->alg.cra_name, CRYPTO_MAX_ALG_NAME, "%s(%s)", name,
750 alg->cra_name) >= CRYPTO_MAX_ALG_NAME)
753 if (snprintf(inst->alg.cra_driver_name, CRYPTO_MAX_ALG_NAME, "%s(%s)",
754 name, alg->cra_driver_name) >= CRYPTO_MAX_ALG_NAME)
766 struct crypto_alg *alg)
772 inst = crypto_alloc_instance2(name, alg, 0);
777 err = crypto_init_spawn(spawn, alg, inst,