luks2: move pre-activation requirements check lower

This commit is contained in:
Ondrej Kozina
2017-09-26 18:13:33 +02:00
committed by Milan Broz
parent 9bbc13f256
commit c015aeca4e
2 changed files with 5 additions and 11 deletions

View File

@@ -1734,6 +1734,10 @@ int LUKS2_activate(struct crypt_device *cd,
char dm_int_name[PATH_MAX], dm_int_dev_name[PATH_MAX];
struct device *device = NULL;
/* do not allow activation when particular requirements detected */
if ((r = LUKS2_unmet_requirements(cd, hdr, 0)))
return r;
/* Add persistent activation flags */
if (!(flags & CRYPT_ACTIVATE_IGNORE_PERSISTENT))
LUKS2_config_get_flags(cd, hdr, &dmd.flags);

View File

@@ -2877,9 +2877,6 @@ static int _activate_by_passphrase(struct crypt_device *cd,
r = LUKS1_activate(cd, name, vk, flags);
}
} else if (isLUKS2(cd->type)) {
if (name && LUKS2_unmet_requirements(cd, &cd->u.luks2.hdr, 0))
return -ETXTBSY;
r = LUKS2_keyslot_open(cd, keyslot,
name ? CRYPT_DEFAULT_SEGMENT : CRYPT_ANY_SEGMENT,
passphrase, passphrase_size, &vk);
@@ -3005,10 +3002,6 @@ int crypt_activate_by_keyfile_offset(struct crypt_device *cd,
}
r = keyslot;
} else if (isLUKS2(cd->type)) {
if (name && LUKS2_unmet_requirements(cd, &cd->u.luks2.hdr, 0)) {
r = -ETXTBSY;
goto out;
}
r = crypt_keyfile_read(cd, keyfile,
&passphrase_read, &passphrase_size_read,
keyfile_offset, keyfile_size, 0);
@@ -3134,8 +3127,6 @@ int crypt_activate_by_volume_key(struct crypt_device *cd,
if (!r && name)
r = LUKS1_activate(cd, name, vk, flags);
} else if (isLUKS2(cd->type)) {
if (name && LUKS2_unmet_requirements(cd, &cd->u.luks2.hdr, 0))
return -ETXTBSY;
/* If key is not provided, try to use internal key */
if (!volume_key) {
if (!cd->volume_key) {
@@ -3991,12 +3982,11 @@ int crypt_activate_by_token(struct crypt_device *cd,
const char *name, int token, void *usrptr, uint32_t flags)
{
int r;
uint32_t check = CRYPT_CD_QUIET | (name ? 0 : CRYPT_CD_UNRESTRICTED);
log_dbg("%s volume %s using token %d.",
name ? "Activating" : "Checking", name ?: "passphrase", token);
if ((r = _onlyLUKS2(cd, check)))
if ((r = _onlyLUKS2(cd, CRYPT_CD_QUIET | CRYPT_CD_UNRESTRICTED)))
return r;
if (token == CRYPT_ANY_TOKEN)