----- Original Message -----
> From: "Fam Zheng" <f...@redhat.com>
> To: qemu-devel@nongnu.org
> Cc: stefa...@redhat.com, kw...@redhat.com, "Miroslav Rezanina" 
> <mreza...@redhat.com>
> Sent: Wednesday, November 13, 2013 5:04:18 AM
> Subject: [PATCH] qemu-img: Fix content mismatch offset of image compare
> 
> We were lucky to pass qemu-iotests 048 (qemu-img compare case) but when
> I tried to run with TEST_DIR=/tmp (tmpfs), it fails with a very weird
> mismatch offset. This fixes the bug.
> 
> In the if branch, setting ret to 1 before using it makes dead code in
> the next line: pnum is never added to mismatch offset even if ret was 0.
> 
> Signed-off-by: Fam Zheng <f...@redhat.com>
> ---
>  qemu-img.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index bf3fb4f..2bab20d 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -1020,10 +1020,10 @@ static int img_compare(int argc, char **argv)
>                  }
>                  ret = compare_sectors(buf1, buf2, nb_sectors, &pnum);
>                  if (ret || pnum != nb_sectors) {
> -                    ret = 1;
>                      qprintf(quiet, "Content mismatch at offset %" PRId64
>                      "!\n",
>                              sectors_to_bytes(
>                                  ret ? sector_num : sector_num + pnum));
> +                    ret = 1;
>                      goto out;
>                  }
>              }
> --
> 1.8.4.2
> 
> 

Correct fix, setting variable to constant before test is definitely wrong.

Reviewed-by: Miroslav Rezanina <mreza...@redhat.com> 

-- 
Miroslav Rezanina
Software Engineer - Virtualization Team

Reply via email to