crypto: add crypto_[un]register_shashes for [un]registering multiple shash entries at once
Add crypto_[un]register_shashes() to allow simplifying init/exit code of shash crypto modules that register multiple algorithms. Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
		
							parent
							
								
									8fc229a51b
								
							
						
					
					
						commit
						50fc3e8d2c
					
				| @ -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) | ||||
| { | ||||
|  | ||||
| @ -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); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user