]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
crypto: algapi - Use crypto_unregister_algs in crypto_register_algs
authorThorsten Blum <thorsten.blum@linux.dev>
Thu, 11 Dec 2025 10:15:55 +0000 (11:15 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 19 Dec 2025 06:47:47 +0000 (14:47 +0800)
Replace the for loop with a call to crypto_unregister_algs(). Return
'ret' immediately and remove the goto statement to simplify the error
handling code.

In crypto_unregister_algs(), unregister the algorithms in reverse order.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
crypto/algapi.c

index e604d0d8b7b410e05df7b8c17e0aff92fbfa40a7..ac4fc790687e47c9b54b20c8644983f44c24d302 100644 (file)
@@ -511,17 +511,13 @@ int crypto_register_algs(struct crypto_alg *algs, int count)
 
        for (i = 0; i < count; i++) {
                ret = crypto_register_alg(&algs[i]);
-               if (ret)
-                       goto err;
+               if (ret) {
+                       crypto_unregister_algs(algs, i);
+                       return ret;
+               }
        }
 
        return 0;
-
-err:
-       for (--i; i >= 0; --i)
-               crypto_unregister_alg(&algs[i]);
-
-       return ret;
 }
 EXPORT_SYMBOL_GPL(crypto_register_algs);
 
@@ -529,7 +525,7 @@ void crypto_unregister_algs(struct crypto_alg *algs, int count)
 {
        int i;
 
-       for (i = 0; i < count; i++)
+       for (i = count - 1; i >= 0; --i)
                crypto_unregister_alg(&algs[i]);
 }
 EXPORT_SYMBOL_GPL(crypto_unregister_algs);