summaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2018-03-20 18:09:15 +0100
committerKevin Wolf <kwolf@redhat.com>2018-03-26 12:17:43 +0200
commitb412f49407e81dd6cdd9aaf5310895e579ed21d6 (patch)
tree5f676a8625d7953ba50dd3f68e6ad3cda531ac15 /block
parente8f6ea6fb6c1fd9a778abebc66806203f2bf667b (diff)
downloadqemu-b412f49407e81dd6cdd9aaf5310895e579ed21d6.tar.gz
vhdx: Require power-of-two block size on create
Images with a non-power-of-two block size are invalid and cannot be opened. Reject such block sizes when creating an image. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Jeff Cody <jcody@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/vhdx.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/block/vhdx.c b/block/vhdx.c
index d2c54b7891..6a5e48eb69 100644
--- a/block/vhdx.c
+++ b/block/vhdx.c
@@ -1877,6 +1877,10 @@ static int coroutine_fn vhdx_co_create(BlockdevCreateOptions *opts,
error_setg_errno(errp, EINVAL, "Block size must be a multiple of 1 MB");
return -EINVAL;
}
+ if (!is_power_of_2(block_size)) {
+ error_setg(errp, "Block size must be a power of two");
+ return -EINVAL;
+ }
if (block_size > VHDX_BLOCK_SIZE_MAX) {
error_setg_errno(errp, EINVAL, "Block size must not exceed %d",
VHDX_BLOCK_SIZE_MAX);