crypto: omap - add omap_aes_unregister_algs helper
PATCH 1/3 crypto: omap - add omap_aes_unregister_algs helper
Add a new helper omap_aes_unregister_algs() and replace two for loops in omap_aes_probe() and omap_aes_remove(), which also ensure ->registered is reset to 0.
Replace two additional for loops with crypto_engine_unregister_aeads() while at it and reset ->registered to 0 explicitly.
--- drivers/crypto/omap-aes.c | 43 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 21 deletions(-)
drivers/crypto/omap-aes.c +22 -21
@@ -1089,6 +1089,20 @@ static struct attribute *omap_aes_attrs[] = { };ATTRIBUTE_GROUPS (omap_aes); +static void omap_aes_unregister_algs (const struct omap_aes_pdata *pdata) +{ +struct omap_aes_algs_info *alg_info; +int i; + +for (i = pdata->algs_info_size -1 ; i >=0 ; i--) { + alg_info = &pdata->algs_info[i]; + +crypto_engine_unregister_skciphers (alg_info->algs_list, + alg_info->registered); + alg_info->registered =0 ; + } +} +static int omap_aes_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -1215,15 +1229,11 @@ static int omap_aes_probe(struct platform_device *pdev)return 0 ; err_aead_algs: -for (i = dd->pdata->aead_algs_info->registered -1 ; i >=0 ; i--) { - aalg = &dd->pdata->aead_algs_info->algs_list[i]; -crypto_engine_unregister_aead (aalg); - } +crypto_engine_unregister_aeads (dd->pdata->aead_algs_info->algs_list, + dd->pdata->aead_algs_info->registered); + dd->pdata->aead_algs_info->registered =0 ; err_algs: -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); +omap_aes_unregister_algs (dd->pdata); err_engine:if (dd->engine)
@@ -1244,25 +1254,16 @@ static int omap_aes_probe(struct platform_device *pdev)static void omap_aes_remove (struct platform_device *pdev) {struct omap_aes_dev *dd =platform_get_drvdata (pdev); -struct aead_engine_alg *aalg; -int i, j;spin_lock_bh (&list_lock);list_del (&dd->list);spin_unlock_bh (&list_lock); -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) { -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); - dd->pdata->algs_info[i].registered--; - } +omap_aes_unregister_algs (dd->pdata); -for (i = dd->pdata->aead_algs_info->registered -1 ; i >=0 ; i--) { - aalg = &dd->pdata->aead_algs_info->algs_list[i]; -crypto_engine_unregister_aead (aalg); - dd->pdata->aead_algs_info->registered--; - } +crypto_engine_unregister_aeads (dd->pdata->aead_algs_info->algs_list, + dd->pdata->aead_algs_info->registered); + dd->pdata->aead_algs_info->registered =0 ;crypto_engine_exit (dd->engine);
PATCH 2/3 crypto: omap - add omap_des_unregister_algs helper
Add a new helper omap_des_unregister_algs() and replace two for loops in omap_des_probe() and omap_des_remove(), which also ensure ->registered is reset to 0.
--- drivers/crypto/omap-des.c | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-)
drivers/crypto/omap-des.c +16 -10
@@ -938,6 +938,20 @@ static int omap_des_get_pdev(struct omap_des_dev *dd,return 0 ; } +static void omap_des_unregister_algs (const struct omap_des_pdata *pdata) +{ +struct omap_des_algs_info *alg_info; +int i; + +for (i = pdata->algs_info_size -1 ; i >=0 ; i--) { + alg_info = &pdata->algs_info[i]; + +crypto_engine_unregister_skciphers (alg_info->algs_list, + alg_info->registered); + alg_info->registered =0 ; + } +} +static int omap_des_probe (struct platform_device *pdev) {struct device *dev = &pdev->dev;
@@ -1043,11 +1057,7 @@ static int omap_des_probe(struct platform_device *pdev)return 0 ; err_algs: -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); - +omap_des_unregister_algs (dd->pdata); err_engine:if (dd->engine)crypto_engine_exit (dd->engine);
@@ -1067,16 +1077,12 @@ static int omap_des_probe(struct platform_device *pdev)static void omap_des_remove (struct platform_device *pdev) {struct omap_des_dev *dd =platform_get_drvdata (pdev); -int i, j;spin_lock_bh (&list_lock);list_del (&dd->list);spin_unlock_bh (&list_lock); -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_skcipher ( - &dd->pdata->algs_info[i].algs_list[j]); +omap_des_unregister_algs (dd->pdata);cancel_work_sync (&dd->done_task);omap_des_dma_cleanup (dd);
PATCH 3/3 crypto: omap - add omap_sham_unregister_algs helper
In reply to Thorsten BlumAdd a new helper omap_sham_unregister_algs() and replace two for loops in omap_sham_probe() and omap_sham_remove(), which also ensure ->registered is reset to 0.
--- drivers/crypto/omap-sham.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-)
drivers/crypto/omap-sham.c +16 -11
@@ -2042,6 +2042,20 @@ static struct attribute *omap_sham_attrs[] = { };ATTRIBUTE_GROUPS (omap_sham); +static void omap_sham_unregister_algs (const struct omap_sham_pdata *pdata) +{ +struct omap_sham_algs_info *alg_info; +int i; + +for (i = pdata->algs_info_size -1 ; i >=0 ; i--) { + alg_info = &pdata->algs_info[i]; + +crypto_engine_unregister_ahashes (alg_info->algs_list, + alg_info->registered); + alg_info->registered =0 ; + } +} +static int omap_sham_probe (struct platform_device *pdev) {struct omap_sham_dev *dd;
@@ -2158,10 +2172,7 @@ static int omap_sham_probe(struct platform_device *pdev)return 0 ; err_algs: -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) -crypto_engine_unregister_ahash ( - &dd->pdata->algs_info[i].algs_list[j]); +omap_sham_unregister_algs (dd->pdata); err_engine_start:crypto_engine_exit (dd->engine); err_engine:
@@ -2182,19 +2193,13 @@ static int omap_sham_probe(struct platform_device *pdev)static void omap_sham_remove (struct platform_device *pdev) {struct omap_sham_dev *dd; -int i, j; dd =platform_get_drvdata (pdev);spin_lock_bh (&sham.lock);list_del (&dd->list);spin_unlock_bh (&sham.lock); -for (i = dd->pdata->algs_info_size -1 ; i >=0 ; i--) -for (j = dd->pdata->algs_info[i].registered -1 ; j >=0 ; j--) { -crypto_engine_unregister_ahash ( - &dd->pdata->algs_info[i].algs_list[j]); - dd->pdata->algs_info[i].registered--; - } +omap_sham_unregister_algs (dd->pdata);cancel_work_sync (&dd->done_task);pm_runtime_dont_use_autosuspend (&pdev->dev);pm_runtime_disable (&pdev->dev);
Herbert Xu
maintainerQuoted 11 lines · Thorsten Blum
Add a new helper
omap_aes_unregister_algs()and replace two for loops inomap_aes_probe()andomap_aes_remove(), which also ensure ->registered is reset to 0.Replace two additional for loops with
crypto_engine_unregister_aeads()while at it and reset ->registered to 0 explicitly.Signed-off-by Thorsten Blum <[email protected]>--- drivers/crypto/omap-aes.c | 43 ++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 21 deletions(-)
All applied. Thanks.
Signature · 3 lines
Email: Herbert Xu <[email protected]> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt