On 07/16/2013 10:29 AM, Paolo Bonzini wrote: > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > block/raw-posix.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) >
> +++ b/block/raw-posix.c > @@ -1089,7 +1089,7 @@ static int64_t coroutine_fn > raw_co_get_block_status(BlockDriverState *bs, > int nb_sectors, int *pnum) > { > off_t start, data, hole; > - int ret; > + int64_t ret; > > ret = fd_open(bs); > if (ret < 0) { > @@ -1097,6 +1097,7 @@ static int64_t coroutine_fn > raw_co_get_block_status(BlockDriverState *bs, > } > > start = sector_num * BDRV_SECTOR_SIZE; > + ret = BDRV_BLOCK_DATA | BDRV_BLOCK_OFFSET_VALID | start; off_t is a signed type; if you are compiling on a platform with 32-bit off_t, is it possible that you will get unintended sign extension for values of 'start' between 2 and 4 GB? Or are such files already impossible to open? [Or do we intentionally require off_t be 64-bits on all platforms we care about?] Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature