From 4b366667b44417a6419f839385bb95b6801ef647 Mon Sep 17 00:00:00 2001 From: Jussi Kivilinna Date: Wed, 11 Jul 2012 14:20:20 +0300 Subject: [PATCH] --- yaml --- r: 329700 b: refs/heads/master c: 50fc3e8d2c9d1ee72c67b751e5ac5d76ebc5a12e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/crypto/shash.c | 36 ++++++++++++++++++++++++++++ trunk/include/crypto/internal/hash.h | 2 ++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c7e8efe95c47..4e6b8c822731 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8fc229a51b0e10f4ceb794e8b99fa0a427a7ba41 +refs/heads/master: 50fc3e8d2c9d1ee72c67b751e5ac5d76ebc5a12e diff --git a/trunk/crypto/shash.c b/trunk/crypto/shash.c index 32067f47e6c7..f426330f1017 100644 --- a/trunk/crypto/shash.c +++ b/trunk/crypto/shash.c @@ -629,6 +629,42 @@ int crypto_unregister_shash(struct shash_alg *alg) } EXPORT_SYMBOL_GPL(crypto_unregister_shash); +int crypto_register_shashes(struct shash_alg *algs, int count) +{ + int i, ret; + + for (i = 0; i < count; i++) { + ret = crypto_register_shash(&algs[i]); + if (ret) + goto err; + } + + return 0; + +err: + for (--i; i >= 0; --i) + crypto_unregister_shash(&algs[i]); + + return ret; +} +EXPORT_SYMBOL_GPL(crypto_register_shashes); + +int crypto_unregister_shashes(struct shash_alg *algs, int count) +{ + int i, ret; + + for (i = count - 1; i >= 0; --i) { + ret = crypto_unregister_shash(&algs[i]); + if (ret) + pr_err("Failed to unregister %s %s: %d\n", + algs[i].base.cra_driver_name, + algs[i].base.cra_name, ret); + } + + return 0; +} +EXPORT_SYMBOL_GPL(crypto_unregister_shashes); + int shash_register_instance(struct crypto_template *tmpl, struct shash_instance *inst) { diff --git a/trunk/include/crypto/internal/hash.h b/trunk/include/crypto/internal/hash.h index 5bfad8c80595..821eae8cbd8c 100644 --- a/trunk/include/crypto/internal/hash.h +++ b/trunk/include/crypto/internal/hash.h @@ -83,6 +83,8 @@ struct hash_alg_common *ahash_attr_alg(struct rtattr *rta, u32 type, u32 mask); int crypto_register_shash(struct shash_alg *alg); int crypto_unregister_shash(struct shash_alg *alg); +int crypto_register_shashes(struct shash_alg *algs, int count); +int crypto_unregister_shashes(struct shash_alg *algs, int count); int shash_register_instance(struct crypto_template *tmpl, struct shash_instance *inst); void shash_free_instance(struct crypto_instance *inst);