summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-crypt.c
diff options
context:
space:
mode:
authorOndrej Kozina <okozina@redhat.com>2017-04-24 14:21:53 +0200
committerMike Snitzer <snitzer@redhat.com>2017-04-24 15:16:03 -0400
commitc82feeec9a014b72c4ffea36648cfb6f81cc1b73 (patch)
tree5d9078d5e48ffa2f6bbcd9b3382bcfe909c159b9 /drivers/md/dm-crypt.c
parent06eb061f48594aa369f6e852b352410298b317a8 (diff)
downloadlinux-c82feeec9a014b72c4ffea36648cfb6f81cc1b73.tar.gz
linux-c82feeec9a014b72c4ffea36648cfb6f81cc1b73.tar.bz2
linux-c82feeec9a014b72c4ffea36648cfb6f81cc1b73.zip
dm crypt: rewrite (wipe) key in crypto layer using random data
The message "key wipe" used to wipe real key stored in crypto layer by rewriting it with zeroes. Since commit 28856a9 ("crypto: xts - consolidate sanity check for keys") this no longer works in FIPS mode for XTS. While running in FIPS mode the crypto key part has to differ from the tweak key. Fixes: 28856a9 ("crypto: xts - consolidate sanity check for keys") Cc: stable@vger.kernel.org Signed-off-by: Ondrej Kozina <okozina@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r--drivers/md/dm-crypt.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index 8bff6f7a4c6c..bb2e747907b0 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -2152,12 +2152,16 @@ out:
static int crypt_wipe_key(struct crypt_config *cc)
{
+ int r;
+
clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
- memset(&cc->key, 0, cc->key_size * sizeof(u8));
+ get_random_bytes(&cc->key, cc->key_size);
kzfree(cc->key_string);
cc->key_string = NULL;
+ r = crypt_setkey(cc);
+ memset(&cc->key, 0, cc->key_size * sizeof(u8));
- return crypt_setkey(cc);
+ return r;
}
static void crypt_dtr(struct dm_target *ti)