[Qemu-devel] [PATCH for-2.12 09/12] vhdx: Require power-of-two block size on create

Kevin Wolf posted 12 patches 7 years, 7 months ago
There is a newer version of this series
[Qemu-devel] [PATCH for-2.12 09/12] vhdx: Require power-of-two block size on create
Posted by Kevin Wolf 7 years, 7 months ago
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>
---
 block/vhdx.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/block/vhdx.c b/block/vhdx.c
index f1b97f4b49..ca211a3196 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);
-- 
2.13.6


Re: [Qemu-devel] [PATCH for-2.12 09/12] vhdx: Require power-of-two block size on create
Posted by Eric Blake 7 years, 7 months ago
On 03/20/2018 12:36 PM, Kevin Wolf wrote:
> 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>
> ---
>   block/vhdx.c | 4 ++++
>   1 file changed, 4 insertions(+)
> 

Reviewed-by: Eric Blake <eblake@redhat.com>

> diff --git a/block/vhdx.c b/block/vhdx.c
> index f1b97f4b49..ca211a3196 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);
> 

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

Re: [Qemu-devel] [PATCH for-2.12 09/12] vhdx: Require power-of-two block size on create
Posted by Jeff Cody 7 years, 7 months ago
On Tue, Mar 20, 2018 at 06:36:29PM +0100, Kevin Wolf wrote:
> Images with a non-power-of-two block size are invalid and cannot be
> opened. Reject such block sizes when creating an image.
> 

Good catch.

Reviewed-by: Jeff Cody <jcody@redhat.com>


> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  block/vhdx.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/block/vhdx.c b/block/vhdx.c
> index f1b97f4b49..ca211a3196 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);
> -- 
> 2.13.6
>