diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2016-10-10 21:58:58 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-10-23 16:10:59 +0200 |
commit | e948f663e9334249c394b88926addcdd3f9e35cd (patch) | |
tree | d187b8b01f4bea45a752862ef1301d920b6bf963 /block/rbd.c | |
parent | 3c0ed2a342e5acb97bdd2c7b64d33a904ad75940 (diff) | |
download | qemu-e948f663e9334249c394b88926addcdd3f9e35cd.zip |
rbd: shift byte count as a 64-bit value
Otherwise, reads of more than 2GB fail. Until commit
7bbca9e290a9c7c217b5a24fc6094e91e54bd05d, reads of 2^41
bytes succeeded at least theoretically.
In fact, pdiscard ought to receive a 64-bit integer as the
count for the same reason.
Reported by Coverity.
Fixes: 7bbca9e290a9c7c217b5a24fc6094e91e54bd05d
Cc: qemu-stable@nongnu.org
Cc: kwolf@redhat.com
Cc: eblake@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'block/rbd.c')
-rw-r--r-- | block/rbd.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/block/rbd.c b/block/rbd.c index 6f9eb6fb9c..f6e1d4bc11 100644 --- a/block/rbd.c +++ b/block/rbd.c @@ -733,7 +733,7 @@ static BlockAIOCB *qemu_rbd_aio_readv(BlockDriverState *bs, void *opaque) { return rbd_start_aio(bs, sector_num << BDRV_SECTOR_BITS, qiov, - nb_sectors << BDRV_SECTOR_BITS, cb, opaque, + (int64_t) nb_sectors << BDRV_SECTOR_BITS, cb, opaque, RBD_AIO_READ); } @@ -745,7 +745,7 @@ static BlockAIOCB *qemu_rbd_aio_writev(BlockDriverState *bs, void *opaque) { return rbd_start_aio(bs, sector_num << BDRV_SECTOR_BITS, qiov, - nb_sectors << BDRV_SECTOR_BITS, cb, opaque, + (int64_t) nb_sectors << BDRV_SECTOR_BITS, cb, opaque, RBD_AIO_WRITE); } |