Skip to content

Commit

Permalink
dm crypt: mark key as invalid until properly loaded
Browse files Browse the repository at this point in the history
In crypt_set_key(), if a failure occurs while replacing the old key
(e.g. tfm->setkey() fails) the key must not have DM_CRYPT_KEY_VALID flag
set.  Otherwise, the crypto layer would have an invalid key that still
has DM_CRYPT_KEY_VALID flag set.

Cc: [email protected]
Signed-off-by: Ondrej Kozina <[email protected]>
Reviewed-by: Mikulas Patocka <[email protected]>
Signed-off-by: Mike Snitzer <[email protected]>
  • Loading branch information
oniko authored and snitm committed Nov 21, 2016
1 parent 0dae7fe commit 265e909
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions drivers/md/dm-crypt.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down

0 comments on commit 265e909

Please sign in to comment.