diff options
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r-- | drivers/md/dm-crypt.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index 4cc3809b2a3a..971241409c30 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c | |||
@@ -2058,9 +2058,6 @@ static int crypt_set_keyring_key(struct crypt_config *cc, const char *key_string | |||
2058 | 2058 | ||
2059 | ret = crypt_setkey(cc); | 2059 | ret = crypt_setkey(cc); |
2060 | 2060 | ||
2061 | /* wipe the kernel key payload copy in each case */ | ||
2062 | memset(cc->key, 0, cc->key_size * sizeof(u8)); | ||
2063 | |||
2064 | if (!ret) { | 2061 | if (!ret) { |
2065 | set_bit(DM_CRYPT_KEY_VALID, &cc->flags); | 2062 | set_bit(DM_CRYPT_KEY_VALID, &cc->flags); |
2066 | kzfree(cc->key_string); | 2063 | kzfree(cc->key_string); |
@@ -2528,6 +2525,10 @@ static int crypt_ctr_cipher(struct dm_target *ti, char *cipher_in, char *key) | |||
2528 | } | 2525 | } |
2529 | } | 2526 | } |
2530 | 2527 | ||
2528 | /* wipe the kernel key payload copy */ | ||
2529 | if (cc->key_string) | ||
2530 | memset(cc->key, 0, cc->key_size * sizeof(u8)); | ||
2531 | |||
2531 | return ret; | 2532 | return ret; |
2532 | } | 2533 | } |
2533 | 2534 | ||
@@ -2966,6 +2967,9 @@ static int crypt_message(struct dm_target *ti, unsigned argc, char **argv) | |||
2966 | return ret; | 2967 | return ret; |
2967 | if (cc->iv_gen_ops && cc->iv_gen_ops->init) | 2968 | if (cc->iv_gen_ops && cc->iv_gen_ops->init) |
2968 | ret = cc->iv_gen_ops->init(cc); | 2969 | ret = cc->iv_gen_ops->init(cc); |
2970 | /* wipe the kernel key payload copy */ | ||
2971 | if (cc->key_string) | ||
2972 | memset(cc->key, 0, cc->key_size * sizeof(u8)); | ||
2969 | return ret; | 2973 | return ret; |
2970 | } | 2974 | } |
2971 | if (argc == 2 && !strcasecmp(argv[1], "wipe")) { | 2975 | if (argc == 2 && !strcasecmp(argv[1], "wipe")) { |
@@ -3012,7 +3016,7 @@ static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits) | |||
3012 | 3016 | ||
3013 | static struct target_type crypt_target = { | 3017 | static struct target_type crypt_target = { |
3014 | .name = "crypt", | 3018 | .name = "crypt", |
3015 | .version = {1, 18, 0}, | 3019 | .version = {1, 18, 1}, |
3016 | .module = THIS_MODULE, | 3020 | .module = THIS_MODULE, |
3017 | .ctr = crypt_ctr, | 3021 | .ctr = crypt_ctr, |
3018 | .dtr = crypt_dtr, | 3022 | .dtr = crypt_dtr, |