diff options
Diffstat (limited to 'crypto/algapi.c')
| -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; |
