]> git.proxmox.com Git - mirror_qemu.git/commitdiff
block/vpc: make checks on max table size a bit more lax
authorJeff Cody <jcody@redhat.com>
Wed, 23 Mar 2016 03:33:42 +0000 (23:33 -0400)
committerKevin Wolf <kwolf@redhat.com>
Fri, 15 Apr 2016 15:22:12 +0000 (17:22 +0200)
The check on the max_table_size field not being larger than required is
valid, and in accordance with the VHD spec.  However, there have been
VHD images encountered in the wild that have an out-of-spec max table
size that is technically too large.

There is no issue in allowing this larger table size, as we also
later verify that the computed size (used for the pagetable) is
large enough to fit all sectors.  In addition, max_table_entries
is bounds checked against SIZE_MAX and INT_MAX.

Remove the strict check, so that we can accomodate these sorts of
images that are benignly out of spec.

Reported-by: Stefan Hajnoczi <stefanha@redhat.com>
Reported-by: Grant Wu <grantwwu@gmail.com>
Signed-off-by: Jeff Cody <jcody@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/vpc.c

index 03aee81f860e4344ac3eff873ef8bdf246daaabc..0eef099532fd7dbc08065052360bb8d6b8791c0b 100644 (file)
@@ -351,10 +351,6 @@ static int vpc_open(BlockDriverState *bs, QDict *options, int flags,
             ret = -EINVAL;
             goto fail;
         }
-        if (s->max_table_entries > (VHD_MAX_SECTORS * 512) / s->block_size) {
-            ret = -EINVAL;
-            goto fail;
-        }
 
         computed_size = (uint64_t) s->max_table_entries * s->block_size;
         if (computed_size < bs->total_sectors * 512) {