diff options
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/algapi.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/crypto/algapi.c b/crypto/algapi.c index 9d4a9fe913f8..056571b85445 100644 --- a/crypto/algapi.c +++ b/crypto/algapi.c | |||
@@ -405,6 +405,41 @@ int crypto_unregister_alg(struct crypto_alg *alg) | |||
405 | } | 405 | } |
406 | EXPORT_SYMBOL_GPL(crypto_unregister_alg); | 406 | EXPORT_SYMBOL_GPL(crypto_unregister_alg); |
407 | 407 | ||
408 | int crypto_register_algs(struct crypto_alg *algs, int count) | ||
409 | { | ||
410 | int i, ret; | ||
411 | |||
412 | for (i = 0; i < count; i++) { | ||
413 | ret = crypto_register_alg(&algs[i]); | ||
414 | if (ret) | ||
415 | goto err; | ||
416 | } | ||
417 | |||
418 | return 0; | ||
419 | |||
420 | err: | ||
421 | for (--i; i >= 0; --i) | ||
422 | crypto_unregister_alg(&algs[i]); | ||
423 | |||
424 | return ret; | ||
425 | } | ||
426 | EXPORT_SYMBOL_GPL(crypto_register_algs); | ||
427 | |||
428 | int crypto_unregister_algs(struct crypto_alg *algs, int count) | ||
429 | { | ||
430 | int i, ret; | ||
431 | |||
432 | for (i = 0; i < count; i++) { | ||
433 | ret = crypto_unregister_alg(&algs[i]); | ||
434 | if (ret) | ||
435 | pr_err("Failed to unregister %s %s: %d\n", | ||
436 | algs[i].cra_driver_name, algs[i].cra_name, ret); | ||
437 | } | ||
438 | |||
439 | return 0; | ||
440 | } | ||
441 | EXPORT_SYMBOL_GPL(crypto_unregister_algs); | ||
442 | |||
408 | int crypto_register_template(struct crypto_template *tmpl) | 443 | int crypto_register_template(struct crypto_template *tmpl) |
409 | { | 444 | { |
410 | struct crypto_template *q; | 445 | struct crypto_template *q; |