From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:59407) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMiX1-00083W-If for qemu-devel@nongnu.org; Fri, 12 Oct 2012 12:56:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TMiWx-000806-8F for qemu-devel@nongnu.org; Fri, 12 Oct 2012 12:56:15 -0400 Received: from mail-pa0-f45.google.com ([209.85.220.45]:46129) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMiWx-0007zw-1W for qemu-devel@nongnu.org; Fri, 12 Oct 2012 12:56:11 -0400 Received: by mail-pa0-f45.google.com with SMTP id fb10so2941954pad.4 for ; Fri, 12 Oct 2012 09:56:10 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <50784BA3.9050401@redhat.com> Date: Fri, 12 Oct 2012 18:56:03 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1350045069-8500-1-git-send-email-kwolf@redhat.com> <1350045069-8500-2-git-send-email-kwolf@redhat.com> In-Reply-To: <1350045069-8500-2-git-send-email-kwolf@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 1/2] qemu-img: Fix division by zero for zero size images List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: qemu-devel@nongnu.org Il 12/10/2012 14:31, Kevin Wolf ha scritto: > Signed-off-by: Kevin Wolf > --- > qemu-img.c | 23 +++++++++++++++-------- > 1 files changed, 15 insertions(+), 8 deletions(-) > > diff --git a/qemu-img.c b/qemu-img.c > index f17f187..849eb41 100644 > --- a/qemu-img.c > +++ b/qemu-img.c > @@ -674,7 +674,7 @@ static int img_convert(int argc, char **argv) > QEMUOptionParameter *out_baseimg_param; > char *options = NULL; > const char *snapshot_name = NULL; > - float local_progress; > + float local_progress = 0; > int min_sparse = 8; /* Need at least 4k of zeros for sparse detection */ > > fmt = NULL; > @@ -914,8 +914,10 @@ static int img_convert(int argc, char **argv) > sector_num = 0; > > nb_sectors = total_sectors; > - local_progress = (float)100 / > - (nb_sectors / MIN(nb_sectors, cluster_sectors)); > + if (nb_sectors != 0) { > + local_progress = (float)100 / > + (nb_sectors / MIN(nb_sectors, cluster_sectors)); > + } > > for(;;) { > int64_t bs_num; > @@ -986,8 +988,10 @@ static int img_convert(int argc, char **argv) > > sector_num = 0; // total number of sectors converted so far > nb_sectors = total_sectors - sector_num; > - local_progress = (float)100 / > - (nb_sectors / MIN(nb_sectors, IO_BUF_SIZE / 512)); > + if (nb_sectors != 0) { > + local_progress = (float)100 / > + (nb_sectors / MIN(nb_sectors, IO_BUF_SIZE / 512)); > + } > > for(;;) { > nb_sectors = total_sectors - sector_num; > @@ -1585,7 +1589,7 @@ static int img_rebase(int argc, char **argv) > int n; > uint8_t * buf_old; > uint8_t * buf_new; > - float local_progress; > + float local_progress = 0; > > buf_old = qemu_blockalign(bs, IO_BUF_SIZE); > buf_new = qemu_blockalign(bs, IO_BUF_SIZE); > @@ -1594,8 +1598,11 @@ static int img_rebase(int argc, char **argv) > bdrv_get_geometry(bs_old_backing, &old_backing_num_sectors); > bdrv_get_geometry(bs_new_backing, &new_backing_num_sectors); > > - local_progress = (float)100 / > - (num_sectors / MIN(num_sectors, IO_BUF_SIZE / 512)); > + if (num_sectors != 0) { > + local_progress = (float)100 / > + (num_sectors / MIN(num_sectors, IO_BUF_SIZE / 512)); > + } > + > for (sector = 0; sector < num_sectors; sector += n) { > > /* How many sectors can we handle with the next read? */ > Reviewed-by: Paolo Bonzini /me keeps this in mind for reviewing Mirek's qemu-img compare series