]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: s5p-sss - use unregister_{ahashes,skciphers} in probe/remove
authorThorsten Blum <thorsten.blum@linux.dev>
Tue, 17 Mar 2026 08:04:52 +0000 (09:04 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 27 Mar 2026 09:52:25 +0000 (18:52 +0900)
Replace multiple for loops with calls to crypto_unregister_ahashes() and
crypto_unregister_skciphers().

If crypto_register_skcipher() fails in s5p_aes_probe(), log the error
directly instead of checking 'i < ARRAY_SIZE(algs)' later.  Also drop
now-unused local index variables.  No functional changes.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Reviewed-by: Vladimir Zapolskiy <vz@mleia.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/s5p-sss.c

index eece1ff6c62f9384c7a338f0192957bc9d42e9e2..bdda7b39af85dfa2d9c2c416e22ac6baec67c7e9 100644 (file)
@@ -2131,7 +2131,7 @@ static struct skcipher_alg algs[] = {
 static int s5p_aes_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
-       int i, j, err;
+       int i, err;
        const struct samsung_aes_variant *variant;
        struct s5p_aes_dev *pdata;
        struct resource *res;
@@ -2237,8 +2237,11 @@ static int s5p_aes_probe(struct platform_device *pdev)
 
        for (i = 0; i < ARRAY_SIZE(algs); i++) {
                err = crypto_register_skcipher(&algs[i]);
-               if (err)
+               if (err) {
+                       dev_err(dev, "can't register '%s': %d\n",
+                               algs[i].base.cra_name, err);
                        goto err_algs;
+               }
        }
 
        if (pdata->use_hash) {
@@ -2265,20 +2268,12 @@ static int s5p_aes_probe(struct platform_device *pdev)
        return 0;
 
 err_hash:
-       for (j = hash_i - 1; j >= 0; j--)
-               crypto_unregister_ahash(&algs_sha1_md5_sha256[j]);
-
+       crypto_unregister_ahashes(algs_sha1_md5_sha256, hash_i);
        tasklet_kill(&pdata->hash_tasklet);
        res->end -= 0x300;
 
 err_algs:
-       if (i < ARRAY_SIZE(algs))
-               dev_err(dev, "can't register '%s': %d\n", algs[i].base.cra_name,
-                       err);
-
-       for (j = 0; j < i; j++)
-               crypto_unregister_skcipher(&algs[j]);
-
+       crypto_unregister_skciphers(algs, i);
        tasklet_kill(&pdata->tasklet);
 
 err_irq:
@@ -2294,15 +2289,13 @@ err_clk:
 static void s5p_aes_remove(struct platform_device *pdev)
 {
        struct s5p_aes_dev *pdata = platform_get_drvdata(pdev);
-       int i;
 
-       for (i = 0; i < ARRAY_SIZE(algs); i++)
-               crypto_unregister_skcipher(&algs[i]);
+       crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
 
        tasklet_kill(&pdata->tasklet);
        if (pdata->use_hash) {
-               for (i = ARRAY_SIZE(algs_sha1_md5_sha256) - 1; i >= 0; i--)
-                       crypto_unregister_ahash(&algs_sha1_md5_sha256[i]);
+               crypto_unregister_ahashes(algs_sha1_md5_sha256,
+                                         ARRAY_SIZE(algs_sha1_md5_sha256));
 
                pdata->res->end -= 0x300;
                tasklet_kill(&pdata->hash_tasklet);