diff options
author | Ondrej Kozina <okozina@redhat.com> | 2024-01-03 15:55:16 +0100 |
---|---|---|
committer | Ondrej Kozina <okozina@redhat.com> | 2024-01-05 14:22:07 +0100 |
commit | bd0768a42a2d99d62eba6c8e108809e62dcb6c61 (patch) | |
tree | 10441cfdb94c9c6700bee0be5a76aa2eeef50b94 | |
parent | 543d220bd44a027244896e6aa7b7d02935169b35 (diff) | |
download | cryptsetup-bd0768a42a2d99d62eba6c8e108809e62dcb6c61.tar.gz |
Respect CRYPT_ACTIVATE_SHARED in reencryption.
-rw-r--r-- | lib/luks2/luks2.h | 2 | ||||
-rw-r--r-- | lib/luks2/luks2_reencrypt.c | 5 | ||||
-rw-r--r-- | lib/setup.c | 4 |
3 files changed, 7 insertions, 4 deletions
diff --git a/lib/luks2/luks2.h b/lib/luks2/luks2.h index 08f6df5b..a92c693a 100644 --- a/lib/luks2/luks2.h +++ b/lib/luks2/luks2.h @@ -494,7 +494,7 @@ 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 device_exclusive_check, bool dynamic); int LUKS2_reencrypt_digest_verify(struct crypt_device *cd, diff --git a/lib/luks2/luks2_reencrypt.c b/lib/luks2/luks2_reencrypt.c index 456501c8..905e1396 100644 --- a/lib/luks2/luks2_reencrypt.c +++ b/lib/luks2/luks2_reencrypt.c @@ -4331,7 +4331,7 @@ int LUKS2_reencrypt_data_offset(struct luks2_hdr *hdr, bool blockwise) /* internal only */ 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; 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)) 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) return r; diff --git a/lib/setup.c b/lib/setup.c index f4c3db7e..f3cbf5f3 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -5092,7 +5092,9 @@ static int _open_and_activate_reencrypt_device(struct crypt_device *cd, log_dbg(cd, "Entering clean reencryption state mode."); 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) r = LUKS2_activate_multi(cd, name, vks, device_size >> SECTOR_SHIFT, flags); |