crypto: omap-aes - Fix registration of algorithms
authorLokesh Vutla <lokeshvutla@ti.com>
Wed, 1 Jun 2016 08:56:02 +0000 (11:56 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 7 Jun 2016 10:41:52 +0000 (18:41 +0800)
Algorithms can be registered only once. So skip registration of
algorithms if already registered (i.e. in case we have two AES cores
in the system.)

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/omap-aes.c

index ce174d3b842ceadcd0fa88577c090b150584b187..4a0e6a545ba266f92b963f5fce8fc9c0842cbf77 100644 (file)
@@ -1185,17 +1185,19 @@ static int omap_aes_probe(struct platform_device *pdev)
        spin_unlock(&list_lock);
 
        for (i = 0; i < dd->pdata->algs_info_size; i++) {
-               for (j = 0; j < dd->pdata->algs_info[i].size; j++) {
-                       algp = &dd->pdata->algs_info[i].algs_list[j];
+               if (!dd->pdata->algs_info[i].registered) {
+                       for (j = 0; j < dd->pdata->algs_info[i].size; j++) {
+                               algp = &dd->pdata->algs_info[i].algs_list[j];
 
-                       pr_debug("reg alg: %s\n", algp->cra_name);
-                       INIT_LIST_HEAD(&algp->cra_list);
+                               pr_debug("reg alg: %s\n", algp->cra_name);
+                               INIT_LIST_HEAD(&algp->cra_list);
 
-                       err = crypto_register_alg(algp);
-                       if (err)
-                               goto err_algs;
+                               err = crypto_register_alg(algp);
+                               if (err)
+                                       goto err_algs;
 
-                       dd->pdata->algs_info[i].registered++;
+                               dd->pdata->algs_info[i].registered++;
+                       }
                }
        }