diff --git a/crypto/shash.c b/crypto/shash.c index 4721f5f134f4..5238e0def4fd 100644 --- a/crypto/shash.c +++ b/crypto/shash.c @@ -542,17 +542,13 @@ int crypto_register_shashes(struct shash_alg *algs, int count) for (i = 0; i < count; i++) { ret = crypto_register_shash(&algs[i]); - if (ret) - goto err; + if (ret) { + crypto_unregister_shashes(algs, i); + return ret; + } } return 0; - -err: - for (--i; i >= 0; --i) - crypto_unregister_shash(&algs[i]); - - return ret; } EXPORT_SYMBOL_GPL(crypto_register_shashes);