diff options
author | Adam J. Richter <adam@yggdrasil.com> | 2002-12-07 22:36:58 -0800 |
---|---|---|
committer | David S. Miller <davem@nuts.ninka.net> | 2002-12-07 22:36:58 -0800 |
commit | 413c55e0c6bef53cd90c93489817ff70801d5eba (patch) | |
tree | 45597c74b60c5b16c50721988f33907c54b83cb9 /crypto | |
parent | 561e33a269398316ec5b5108f45b6b6335741e7d (diff) | |
download | history-413c55e0c6bef53cd90c93489817ff70801d5eba.tar.gz |
[CRYPTO]: Simplify crypto memory allocation.
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/api.c | 32 |
1 files changed, 4 insertions, 28 deletions
diff --git a/crypto/api.c b/crypto/api.c index f41d1437a4dad5..626437fb5dea90 100644 --- a/crypto/api.c +++ b/crypto/api.c @@ -123,44 +123,26 @@ struct crypto_tfm *crypto_alloc_tfm(const char *name, u32 flags) if (alg == NULL) goto out; - tfm = kmalloc(sizeof(*tfm), GFP_KERNEL); + tfm = kmalloc(sizeof(*tfm) + alg->cra_ctxsize, GFP_KERNEL); if (tfm == NULL) goto out_put; memset(tfm, 0, sizeof(*tfm)); - if (alg->cra_ctxsize) { - tfm->crt_ctx = kmalloc(alg->cra_ctxsize, GFP_KERNEL); - if (tfm->crt_ctx == NULL) - goto out_free_tfm; - } + tfm->crt_ctx = (void*) &tfm[1]; tfm->__crt_alg = alg; - if (alg->cra_blocksize) { - tfm->crt_work_block = kmalloc(alg->cra_blocksize + 1, - GFP_KERNEL); - if (tfm->crt_work_block == NULL) - goto out_free_ctx; - } - if (crypto_init_flags(tfm, flags)) - goto out_free_work_block; + goto out_free_tfm; if (crypto_init_ops(tfm)) { crypto_exit_ops(tfm); - goto out_free_ctx; + goto out_free_tfm; } goto out; -out_free_work_block: - if (tfm->__crt_alg->cra_blocksize) - kfree(tfm->crt_work_block); - -out_free_ctx: - if (tfm->__crt_alg->cra_ctxsize) - kfree(tfm->crt_ctx); out_free_tfm: kfree(tfm); tfm = NULL; @@ -172,12 +154,6 @@ out: void crypto_free_tfm(struct crypto_tfm *tfm) { - if (tfm->__crt_alg->cra_ctxsize) - kfree(tfm->crt_ctx); - - if (tfm->__crt_alg->cra_blocksize) - kfree(tfm->crt_work_block); - if (crypto_tfm_alg_type(tfm) == CRYPTO_ALG_TYPE_CIPHER) if (tfm->crt_cipher.cit_iv) kfree(tfm->crt_cipher.cit_iv); |