aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Rompf <stefan@loplof.de>2006-01-06 00:20:08 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-06 08:34:01 -0800
commit9d3520a339d62f942085e9888f66905eb8b350bd (patch)
tree622374ba69e8430ec2ec8d7b00a3d28990659d45
parent0b56306e56784d0513e1193d58c05a6bd97bd1a9 (diff)
downloadlinux-9d3520a339d62f942085e9888f66905eb8b350bd.tar.gz
[PATCH] dm-crypt: zero key before freeing it
Zap the memory before freeing it so we don't leave crypto information around in memory. Signed-off-by: Stefan Rompf <stefan@loplof.de> Acked-by: Clemens Fruhwirth <clemens@endorphin.org> Acked-by: Alasdair G Kergon <agk@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--drivers/md/dm-crypt.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index cf6631056683b7..a601a427885cb0 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -690,6 +690,8 @@ bad3:
bad2:
crypto_free_tfm(tfm);
bad1:
+ /* Must zero key material before freeing */
+ memset(cc, 0, sizeof(*cc) + cc->key_size * sizeof(u8));
kfree(cc);
return -EINVAL;
}
@@ -706,6 +708,9 @@ static void crypt_dtr(struct dm_target *ti)
cc->iv_gen_ops->dtr(cc);
crypto_free_tfm(cc->tfm);
dm_put_device(ti, cc->dev);
+
+ /* Must zero key material before freeing */
+ memset(cc, 0, sizeof(*cc) + cc->key_size * sizeof(u8));
kfree(cc);
}