diff options
Diffstat (limited to 'src/home/homework-luks.c')
-rw-r--r-- | src/home/homework-luks.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/home/homework-luks.c b/src/home/homework-luks.c index 3433cf7d40..5ad7706636 100644 --- a/src/home/homework-luks.c +++ b/src/home/homework-luks.c @@ -1378,7 +1378,15 @@ int home_setup_luks( return r; } - r = loop_device_make(setup->image_fd, O_RDWR, offset, size, user_record_luks_sector_size(h), 0, LOCK_UN, &setup->loop); + r = loop_device_make( + setup->image_fd, + O_RDWR, + offset, + size, + h->luks_sector_size == UINT64_MAX ? UINT32_MAX : user_record_luks_sector_size(h), /* if sector size is not specified, select UINT32_MAX, i.e. auto-probe */ + /* loop_flags= */ 0, + LOCK_UN, + &setup->loop); if (r == -ENOENT) { log_error_errno(r, "Loopback block device support is not available on this system."); return -ENOLINK; /* make recognizable */ @@ -2319,7 +2327,15 @@ int home_create_luks( log_info("Writing of partition table completed."); - r = loop_device_make(setup->image_fd, O_RDWR, partition_offset, partition_size, user_record_luks_sector_size(h), 0, LOCK_EX, &setup->loop); + r = loop_device_make( + setup->image_fd, + O_RDWR, + partition_offset, + partition_size, + user_record_luks_sector_size(h), + 0, + LOCK_EX, + &setup->loop); if (r < 0) { if (r == -ENOENT) { /* this means /dev/loop-control doesn't exist, i.e. we are in a container * or similar and loopback bock devices are not available, return a |