mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
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. Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
8005dc808b
commit
c207524b73
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user