aboutsummaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDavid S. Miller <davem@nuts.davemloft.net>2004-09-14 08:21:40 -0700
committerDavid S. Miller <davem@nuts.davemloft.net>2004-09-14 08:21:40 -0700
commit3749f8cadd561de83f42cc87682f728d4a970ac0 (patch)
tree1c4704062961a50b41acf717f69ca707b34c0b4b /crypto
parentb7ba1003428ccac10270554c4d4b85491510b73d (diff)
downloadhistory-3749f8cadd561de83f42cc87682f728d4a970ac0.tar.gz
[CRYPTO]: Zero out tfm before freeing in crypto_free_tfm().
Based upon discussions with Ulrich Kuehn (ukuehn@acm.org) Signed-off-by: James Morris <jmorris@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/api.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/crypto/api.c b/crypto/api.c
index 6f0e625714bf24..394169a8577d06 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -155,8 +155,12 @@ out:
void crypto_free_tfm(struct crypto_tfm *tfm)
{
+ struct crypto_alg *alg = tfm->__crt_alg;
+ int size = sizeof(*tfm) + alg->cra_ctxsize;
+
crypto_exit_ops(tfm);
- crypto_alg_put(tfm->__crt_alg);
+ crypto_alg_put(alg);
+ memset(tfm, 0, size);
kfree(tfm);
}