|
|
@@ -1497,12 +1497,15 @@ static int crypt_set_key(struct crypt_config *cc, char *key)
|
|
|
if (!cc->key_size && strcmp(key, "-"))
|
|
|
goto out;
|
|
|
|
|
|
+ /* clear the flag since following operations may invalidate previously valid key */
|
|
|
+ clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
|
|
|
+
|
|
|
if (cc->key_size && crypt_decode_key(cc->key, key, cc->key_size) < 0)
|
|
|
goto out;
|
|
|
|
|
|
- set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
|
|
|
-
|
|
|
r = crypt_setkey_allcpus(cc);
|
|
|
+ if (!r)
|
|
|
+ set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
|
|
|
|
|
|
out:
|
|
|
/* Hex key string not needed after here, so wipe it. */
|