Commit 91fc6c7b authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Herbert Xu

crypto: ccree - use devm_kzalloc() for hash data

As the lifetime of the hash data matches the lifetime of the driver,
hash data can be allocated using the managed allocators.
While at it, simplify cc_hash_free() by removing an unneeded check
(hash_handle is always valid here).
Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent f7c8f992
...@@ -1828,7 +1828,7 @@ static struct cc_hash_alg *cc_alloc_hash_alg(struct cc_hash_template *template, ...@@ -1828,7 +1828,7 @@ static struct cc_hash_alg *cc_alloc_hash_alg(struct cc_hash_template *template,
struct crypto_alg *alg; struct crypto_alg *alg;
struct ahash_alg *halg; struct ahash_alg *halg;
t_crypto_alg = kzalloc(sizeof(*t_crypto_alg), GFP_KERNEL); t_crypto_alg = devm_kzalloc(dev, sizeof(*t_crypto_alg), GFP_KERNEL);
if (!t_crypto_alg) if (!t_crypto_alg)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
...@@ -1961,7 +1961,7 @@ int cc_hash_alloc(struct cc_drvdata *drvdata) ...@@ -1961,7 +1961,7 @@ int cc_hash_alloc(struct cc_drvdata *drvdata)
int rc = 0; int rc = 0;
int alg; int alg;
hash_handle = kzalloc(sizeof(*hash_handle), GFP_KERNEL); hash_handle = devm_kzalloc(dev, sizeof(*hash_handle), GFP_KERNEL);
if (!hash_handle) if (!hash_handle)
return -ENOMEM; return -ENOMEM;
...@@ -2022,7 +2022,6 @@ int cc_hash_alloc(struct cc_drvdata *drvdata) ...@@ -2022,7 +2022,6 @@ int cc_hash_alloc(struct cc_drvdata *drvdata)
if (rc) { if (rc) {
dev_err(dev, "%s alg registration failed\n", dev_err(dev, "%s alg registration failed\n",
driver_hash[alg].driver_name); driver_hash[alg].driver_name);
kfree(t_alg);
goto fail; goto fail;
} }
...@@ -2046,7 +2045,6 @@ int cc_hash_alloc(struct cc_drvdata *drvdata) ...@@ -2046,7 +2045,6 @@ int cc_hash_alloc(struct cc_drvdata *drvdata)
if (rc) { if (rc) {
dev_err(dev, "%s alg registration failed\n", dev_err(dev, "%s alg registration failed\n",
driver_hash[alg].driver_name); driver_hash[alg].driver_name);
kfree(t_alg);
goto fail; goto fail;
} }
...@@ -2056,8 +2054,7 @@ int cc_hash_alloc(struct cc_drvdata *drvdata) ...@@ -2056,8 +2054,7 @@ int cc_hash_alloc(struct cc_drvdata *drvdata)
return 0; return 0;
fail: fail:
kfree(drvdata->hash_handle); cc_hash_free(drvdata);
drvdata->hash_handle = NULL;
return rc; return rc;
} }
...@@ -2066,17 +2063,12 @@ int cc_hash_free(struct cc_drvdata *drvdata) ...@@ -2066,17 +2063,12 @@ int cc_hash_free(struct cc_drvdata *drvdata)
struct cc_hash_alg *t_hash_alg, *hash_n; struct cc_hash_alg *t_hash_alg, *hash_n;
struct cc_hash_handle *hash_handle = drvdata->hash_handle; struct cc_hash_handle *hash_handle = drvdata->hash_handle;
if (hash_handle) { list_for_each_entry_safe(t_hash_alg, hash_n, &hash_handle->hash_list,
list_for_each_entry_safe(t_hash_alg, hash_n, entry) {
&hash_handle->hash_list, entry) { crypto_unregister_ahash(&t_hash_alg->ahash_alg);
crypto_unregister_ahash(&t_hash_alg->ahash_alg); list_del(&t_hash_alg->entry);
list_del(&t_hash_alg->entry);
kfree(t_hash_alg);
}
kfree(hash_handle);
drvdata->hash_handle = NULL;
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment