summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorLokesh Vutla <lokeshvutla@ti.com>2016-06-01 11:56:02 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2016-06-07 18:41:52 +0800
commit3741bbb207f7b9e92ad3b878a30ccd1ddcdb8ac8 (patch)
tree26539599039d606b22b58556fd27a5523abc48bf /drivers
parent0a7f330c12f2b3cab53b396d4dc369c2dcf272eb (diff)
downloadlinux-3741bbb207f7b9e92ad3b878a30ccd1ddcdb8ac8.tar.bz2
crypto: omap-aes - Fix registration of algorithms
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/crypto/omap-aes.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/crypto/omap-aes.c b/drivers/crypto/omap-aes.c
index ce174d3b842c..4a0e6a545ba2 100644
--- a/drivers/crypto/omap-aes.c
+++ b/drivers/crypto/omap-aes.c
@@ -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++;
+ }
}
}