diff options
author | Kevin Wolf <kwolf@redhat.com> | 2009-09-15 12:30:43 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-10-05 09:32:52 -0500 |
commit | 80ee15a6b274dfcedb0ad7db8c9e7d392210d6a1 (patch) | |
tree | 4e20de957cf3d4709dd95082c96b9b1a7f8e3807 /block/qcow2-refcount.c | |
parent | qemu/virtio-pci: remove unnecessary check (diff) | |
download | qemu-kvm-80ee15a6b274dfcedb0ad7db8c9e7d392210d6a1.tar.gz qemu-kvm-80ee15a6b274dfcedb0ad7db8c9e7d392210d6a1.tar.bz2 qemu-kvm-80ee15a6b274dfcedb0ad7db8c9e7d392210d6a1.zip |
qcow2: Increase maximum cluster size to 2 MB
This patch increases the maximum qcow2 cluster size to 2 MB. Starting with 128k
clusters, L2 tables span 2 GB or more of virtual disk space, causing 32 bit
truncation and wraparound of signed integers. Therefore some variables need to
use a larger data type.
While being at reviewing data types, change some integers that are used for
array indices to unsigned. In some places they were checked against some upper
limit but not for negative values. This could avoid potential segfaults with
corrupted qcow2 images.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
Diffstat (limited to 'block/qcow2-refcount.c')
-rw-r--r-- | block/qcow2-refcount.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 0aac2edee..609eee189 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -192,7 +192,8 @@ static int64_t alloc_refcount_block(BlockDriverState *bs, int64_t cluster_index) { BDRVQcowState *s = bs->opaque; int64_t offset, refcount_block_offset; - int ret, refcount_table_index; + unsigned int refcount_table_index; + int ret; uint64_t data64; int cache = cache_refcount_updates; |