qemu-e2k/block
Tuguoyi 348fcc4f7a qcow2-cluster: Fix integer left shift error in qcow2_alloc_cluster_link_l2()
When calculating the offset, the result of left shift operation will be promoted
to type int64 automatically because the left operand of + operator is uint64_t.
but the result after integer promotion may be produce an error value for us and
trigger the following asserting error.

For example, consider i=0x2000, cluster_bits=18, the result of left shift
operation will be 0x80000000. Cause argument i is of signed integer type,
the result is automatically promoted to 0xffffffff80000000 which is not
we expected

The way to trigger the assertion error:
  qemu-img create -f qcow2 -o preallocation=full,cluster_size=256k tmpdisk 10G

This patch fix it by casting @i to uint64_t before doing left shift operation

Signed-off-by: Guoyi Tu <tu.guoyi@h3c.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-id: 81ba90fe0c014f269621c283269b42ad@h3c.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2020-08-05 14:56:11 +01:00
..
monitor blockdev: Split off basic bitmap operations for qemu-img 2020-05-19 10:32:14 -05:00
accounting.c
aio_task.c
amend.c block/amend: Check whether the node exists 2020-07-27 12:37:25 +02:00
backup-top.c block: Drop @child_class from bdrv_child_perm() 2020-05-18 19:05:25 +02:00
backup-top.h
backup.c backup: Make sure that source and target size match 2020-05-08 13:26:35 +02:00
blkdebug.c error: Eliminate error_propagate() with Coccinelle, part 2 2020-07-10 15:18:08 +02:00
blklogwrites.c error: Eliminate error_propagate() with Coccinelle, part 2 2020-07-10 15:18:08 +02:00
blkreplay.c block: Use bdrv_default_perms() 2020-05-18 19:05:25 +02:00
blkverify.c error: Eliminate error_propagate() with Coccinelle, part 2 2020-07-10 15:18:08 +02:00
block-backend.c block: fix bdrv_aio_cancel() for ENOMEDIUM requests 2020-07-21 12:00:38 +02:00
block-copy.c block/block-copy: block_copy_dirty_clusters: fix failure check 2020-07-06 08:33:06 +02:00
bochs.c block: Use bdrv_default_perms() 2020-05-18 19:05:25 +02:00
cloop.c block: Use bdrv_default_perms() 2020-05-18 19:05:25 +02:00
commit.c block: Drop @child_class from bdrv_child_perm() 2020-05-18 19:05:25 +02:00
copy-on-read.c block: Drop @child_class from bdrv_child_perm() 2020-05-18 19:05:25 +02:00
create.c
crypto.c block/crypto: disallow write sharing by default 2020-07-21 10:49:02 +02:00
crypto.h block/crypto: implement the encryption key management 2020-07-06 08:49:28 +02:00
curl.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
dirty-bitmap.c block/dirty-bitmap: add bdrv_has_named_bitmaps helper 2020-05-28 13:15:22 -05:00
dmg-bz2.c
dmg-lzfse.c
dmg.c block: Use bdrv_default_perms() 2020-05-18 19:05:25 +02:00
dmg.h
file-posix.c file-posix: Handle EINVAL fallocate return value 2020-07-21 16:28:57 +02:00
file-win32.c error: Eliminate error_propagate() with Coccinelle, part 2 2020-07-10 15:18:08 +02:00
filter-compress.c block: Use bdrv_default_perms() 2020-05-18 19:05:25 +02:00
gluster.c error: Reduce unnecessary error propagation 2020-07-10 15:18:08 +02:00
io_uring.c io_uring: use io_uring_cq_ready() to check for ready cqes 2020-06-05 09:54:48 +01:00
io.c block: Fix bdrv_aligned_p*v() for qiov_offset != 0 2020-07-28 15:28:47 +02:00
iscsi-opts.c
iscsi.c iscsi: return -EIO when sense fields are meaningless 2020-07-10 18:02:23 -04:00
linux-aio.c
Makefile.objs Remove VXHS block device 2020-07-17 14:20:57 +02:00
mirror.c block: Drop @child_class from bdrv_child_perm() 2020-05-18 19:05:25 +02:00
nbd.c block/nbd: nbd_co_reconnect_loop(): don't sleep if drained 2020-07-28 09:54:43 -05:00
nfs.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
null.c
nvme.c block/nvme: support nested aio_poll() 2020-06-23 15:46:08 +01:00
parallels.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
parallels.h
qapi-sysemu.c
qapi.c
qcow2-bitmap.c qcow2: Release read-only bitmaps when inactivated 2020-08-03 08:59:37 -05:00
qcow2-cache.c
qcow2-cluster.c qcow2-cluster: Fix integer left shift error in qcow2_alloc_cluster_link_l2() 2020-08-05 14:56:11 +01:00
qcow2-refcount.c
qcow2-snapshot.c
qcow2-threads.c qcow2: add zstd cluster compression 2020-05-13 14:20:31 +02:00
qcow2.c qcow2: Fix capitalization of header extension constant. 2020-07-27 15:39:58 -05:00
qcow2.h qcow2: Expose bitmaps' size during measure 2020-05-28 13:16:16 -05:00
qcow.c qcow: Tolerate backing_fmt= 2020-07-14 15:18:59 +02:00
qed-check.c
qed-cluster.c
qed-l2-cache.c
qed-table.c
qed.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
qed.h qed: Simplify backing reads 2020-07-06 10:34:14 +02:00
quorum.c error: Reduce unnecessary error propagation 2020-07-10 15:18:08 +02:00
raw-format.c error: Eliminate error_propagate() with Coccinelle, part 2 2020-07-10 15:18:08 +02:00
rbd.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
replication.c error: Reduce unnecessary error propagation 2020-07-10 15:18:08 +02:00
sheepdog.c sheepdog: Add trivial backing_fmt support 2020-07-14 15:18:59 +02:00
snapshot.c
ssh.c qapi: Smooth another visitor error checking pattern 2020-07-10 15:18:08 +02:00
stream.c block: Add support to warn on backing file change without format 2020-07-14 15:18:59 +02:00
throttle-groups.c qom: Change object_get_canonical_path_component() not to malloc 2020-07-21 16:23:43 +02:00
throttle.c error: Eliminate error_propagate() with Coccinelle, part 2 2020-07-10 15:18:08 +02:00
trace-events block/nbd: split nbd_establish_connection out of nbd_client_connect 2020-07-28 09:54:43 -05:00
vdi.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vhdx-endian.c
vhdx-log.c
vhdx.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vhdx.h
vmdk.c vmdk: Add trivial backing_fmt support 2020-07-14 15:18:59 +02:00
vpc.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
vvfat.c error: Avoid error_propagate() after migrate_add_blocker() 2020-07-10 15:18:08 +02:00
win32-aio.c
write-threshold.c