aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-crypt.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r--drivers/md/dm-crypt.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
index a2768835d394..0aedd0ebccec 100644
--- a/drivers/md/dm-crypt.c
+++ b/drivers/md/dm-crypt.c
@@ -1503,12 +1503,15 @@ static int crypt_set_key(struct crypt_config *cc, char *key)
1503 if (!cc->key_size && strcmp(key, "-")) 1503 if (!cc->key_size && strcmp(key, "-"))
1504 goto out; 1504 goto out;
1505 1505
1506 /* clear the flag since following operations may invalidate previously valid key */
1507 clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1508
1506 if (cc->key_size && crypt_decode_key(cc->key, key, cc->key_size) < 0) 1509 if (cc->key_size && crypt_decode_key(cc->key, key, cc->key_size) < 0)
1507 goto out; 1510 goto out;
1508 1511
1509 set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1510
1511 r = crypt_setkey_allcpus(cc); 1512 r = crypt_setkey_allcpus(cc);
1513 if (!r)
1514 set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1512 1515
1513out: 1516out:
1514 /* Hex key string not needed after here, so wipe it. */ 1517 /* Hex key string not needed after here, so wipe it. */