static int s5p_aes_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
- int i, j, err;
+ int i, err;
const struct samsung_aes_variant *variant;
struct s5p_aes_dev *pdata;
struct resource *res;
for (i = 0; i < ARRAY_SIZE(algs); i++) {
err = crypto_register_skcipher(&algs[i]);
- if (err)
+ if (err) {
+ dev_err(dev, "can't register '%s': %d\n",
+ algs[i].base.cra_name, err);
goto err_algs;
+ }
}
if (pdata->use_hash) {
return 0;
err_hash:
- for (j = hash_i - 1; j >= 0; j--)
- crypto_unregister_ahash(&algs_sha1_md5_sha256[j]);
-
+ crypto_unregister_ahashes(algs_sha1_md5_sha256, hash_i);
tasklet_kill(&pdata->hash_tasklet);
res->end -= 0x300;
err_algs:
- if (i < ARRAY_SIZE(algs))
- dev_err(dev, "can't register '%s': %d\n", algs[i].base.cra_name,
- err);
-
- for (j = 0; j < i; j++)
- crypto_unregister_skcipher(&algs[j]);
-
+ crypto_unregister_skciphers(algs, i);
tasklet_kill(&pdata->tasklet);
err_irq:
static void s5p_aes_remove(struct platform_device *pdev)
{
struct s5p_aes_dev *pdata = platform_get_drvdata(pdev);
- int i;
- for (i = 0; i < ARRAY_SIZE(algs); i++)
- crypto_unregister_skcipher(&algs[i]);
+ crypto_unregister_skciphers(algs, ARRAY_SIZE(algs));
tasklet_kill(&pdata->tasklet);
if (pdata->use_hash) {
- for (i = ARRAY_SIZE(algs_sha1_md5_sha256) - 1; i >= 0; i--)
- crypto_unregister_ahash(&algs_sha1_md5_sha256[i]);
+ crypto_unregister_ahashes(algs_sha1_md5_sha256,
+ ARRAY_SIZE(algs_sha1_md5_sha256));
pdata->res->end -= 0x300;
tasklet_kill(&pdata->hash_tasklet);