Respect CRYPT_ACTIVATE_SHARED in reencryption.

This commit is contained in:
Ondrej Kozina
2024-01-03 15:55:16 +01:00
parent 543d220bd4
commit bd0768a42a
3 changed files with 7 additions and 4 deletions

View File

@@ -494,7 +494,7 @@ int LUKS2_reencrypt_check_device_size(struct crypt_device *cd,
struct luks2_hdr *hdr, struct luks2_hdr *hdr,
uint64_t check_size, uint64_t check_size,
uint64_t *dev_size, uint64_t *dev_size,
bool activation, bool device_exclusive_check,
bool dynamic); bool dynamic);
int LUKS2_reencrypt_digest_verify(struct crypt_device *cd, int LUKS2_reencrypt_digest_verify(struct crypt_device *cd,

View File

@@ -4331,7 +4331,7 @@ int LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise)
/* internal only */ /* internal only */
int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct luks2_hdr *hdr, int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct luks2_hdr *hdr,
uint64_t check_size, uint64_t *dev_size, bool activation, bool dynamic) uint64_t check_size, uint64_t *dev_size, bool device_exclusive_check, bool dynamic)
{ {
int r; int r;
uint64_t data_offset, real_size = 0; uint64_t data_offset, real_size = 0;
@@ -4340,7 +4340,8 @@ int LUKS2_reencrypt_check_device_size(struct crypt_device *cd, struct luks2_hdr
(LUKS2_get_segment_by_flag(hdr, "backup-moved-segment") || dynamic)) (LUKS2_get_segment_by_flag(hdr, "backup-moved-segment") || dynamic))
check_size += reencrypt_data_shift(hdr); check_size += reencrypt_data_shift(hdr);
r = device_check_access(cd, crypt_data_device(cd), activation ? DEV_EXCL : DEV_OK); r = device_check_access(cd, crypt_data_device(cd),
device_exclusive_check ? DEV_EXCL : DEV_OK);
if (r) if (r)
return r; return r;

View File

@@ -5092,7 +5092,9 @@ static int _open_and_activate_reencrypt_device(struct crypt_device *cd,
log_dbg(cd, "Entering clean reencryption state mode."); log_dbg(cd, "Entering clean reencryption state mode.");
if (r >= 0) if (r >= 0)
r = LUKS2_reencrypt_check_device_size(cd, hdr, minimal_size, &device_size, true, dynamic_size); r = LUKS2_reencrypt_check_device_size(cd, hdr, minimal_size, &device_size,
!(flags & CRYPT_ACTIVATE_SHARED),
dynamic_size);
if (r >= 0) if (r >= 0)
r = LUKS2_activate_multi(cd, name, vks, device_size >> SECTOR_SHIFT, flags); r = LUKS2_activate_multi(cd, name, vks, device_size >> SECTOR_SHIFT, flags);