block: Check bdrv_getlength() return value in bdrv_make_zero()

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Kevin Wolf 2014-04-14 17:03:34 +02:00
parent da15ee5134
commit 9ce10c0bdc
1 changed files with 7 additions and 1 deletions

View File

@ -2749,10 +2749,16 @@ int bdrv_write_zeroes(BlockDriverState *bs, int64_t sector_num,
*/ */
int bdrv_make_zero(BlockDriverState *bs, BdrvRequestFlags flags) int bdrv_make_zero(BlockDriverState *bs, BdrvRequestFlags flags)
{ {
int64_t target_size = bdrv_getlength(bs) / BDRV_SECTOR_SIZE; int64_t target_size;
int64_t ret, nb_sectors, sector_num = 0; int64_t ret, nb_sectors, sector_num = 0;
int n; int n;
target_size = bdrv_getlength(bs);
if (target_size < 0) {
return target_size;
}
target_size /= BDRV_SECTOR_SIZE;
for (;;) { for (;;) {
nb_sectors = target_size - sector_num; nb_sectors = target_size - sector_num;
if (nb_sectors <= 0) { if (nb_sectors <= 0) {