aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Kozina <okozina@redhat.com>2024-01-03 15:55:16 +0100
committerOndrej Kozina <okozina@redhat.com>2024-01-05 14:22:07 +0100
commitbd0768a42a2d99d62eba6c8e108809e62dcb6c61 (patch)
tree10441cfdb94c9c6700bee0be5a76aa2eeef50b94
parent543d220bd44a027244896e6aa7b7d02935169b35 (diff)
downloadcryptsetup-bd0768a42a2d99d62eba6c8e108809e62dcb6c61.tar.gz
Respect CRYPT_ACTIVATE_SHARED in reencryption.
-rw-r--r--lib/luks2/luks2.h2
-rw-r--r--lib/luks2/luks2_reencrypt.c5
-rw-r--r--lib/setup.c4
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);