crypto: Add bulk algorithm registration interface
Hardware crypto engines frequently need to register a selection of different algorithms with the core. Simplify their code slightly, especially the error handling, by providing functions to register a number of algorithms in a single call. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
b85a088f15
commit
4b004346fe
|
@ -405,6 +405,41 @@ int crypto_unregister_alg(struct crypto_alg *alg)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(crypto_unregister_alg);
|
EXPORT_SYMBOL_GPL(crypto_unregister_alg);
|
||||||
|
|
||||||
|
int crypto_register_algs(struct crypto_alg *algs, int count)
|
||||||
|
{
|
||||||
|
int i, ret;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
ret = crypto_register_alg(&algs[i]);
|
||||||
|
if (ret)
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err:
|
||||||
|
for (--i; i >= 0; --i)
|
||||||
|
crypto_unregister_alg(&algs[i]);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_register_algs);
|
||||||
|
|
||||||
|
int crypto_unregister_algs(struct crypto_alg *algs, int count)
|
||||||
|
{
|
||||||
|
int i, ret;
|
||||||
|
|
||||||
|
for (i = 0; i < count; i++) {
|
||||||
|
ret = crypto_unregister_alg(&algs[i]);
|
||||||
|
if (ret)
|
||||||
|
pr_err("Failed to unregister %s %s: %d\n",
|
||||||
|
algs[i].cra_driver_name, algs[i].cra_name, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(crypto_unregister_algs);
|
||||||
|
|
||||||
int crypto_register_template(struct crypto_template *tmpl)
|
int crypto_register_template(struct crypto_template *tmpl)
|
||||||
{
|
{
|
||||||
struct crypto_template *q;
|
struct crypto_template *q;
|
||||||
|
|
|
@ -314,6 +314,8 @@ struct crypto_alg {
|
||||||
*/
|
*/
|
||||||
int crypto_register_alg(struct crypto_alg *alg);
|
int crypto_register_alg(struct crypto_alg *alg);
|
||||||
int crypto_unregister_alg(struct crypto_alg *alg);
|
int crypto_unregister_alg(struct crypto_alg *alg);
|
||||||
|
int crypto_register_algs(struct crypto_alg *algs, int count);
|
||||||
|
int crypto_unregister_algs(struct crypto_alg *algs, int count);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Algorithm query interface.
|
* Algorithm query interface.
|
||||||
|
|
Loading…
Reference in New Issue