diff options
Diffstat (limited to 'drivers/md/dm-crypt.c')
-rw-r--r-- | drivers/md/dm-crypt.c | 7 |
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 | ||
1513 | out: | 1516 | out: |
1514 | /* Hex key string not needed after here, so wipe it. */ | 1517 | /* Hex key string not needed after here, so wipe it. */ |