From: Gary Hook <gary.hook@nimboxx.com>
To: "qemu-devel@nongnu.org" <qemu-devel@nongnu.org>
Subject: [Qemu-devel] [PATCH 1/1] block migration: fix return value mismatch
Date: Wed, 12 Nov 2014 18:48:18 +0000 [thread overview]
Message-ID: <D0890790.3A5A%gary.hook@nimboxx.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1286 bytes --]
The function uses a ternary return value (<, >, == 0) defined as an int. The code in in this function uses int64_t types to collect ftell() return values and use their difference as the return value. Unfortunately, narrowing of integer types results in the disposal of the left-most bits that won't fit in the target type. Here, for values larger than 2GB, the resulting value will be randomly negative or positive, based on total number of blocks. The patch ensures that only +1, -1, or 0 are returned to properly report status.
diff -u -r a/block-migration.c b/block-migration.c
--- a/block-migration.c 2014-04-17 08:30:59.000000000 -0500
+++ b/block-migration.c 2014-11-10 12:39:10.727431187 -0600
@@ -628,6 +628,7 @@
{
int ret;
int64_t last_ftell = qemu_ftell(f);
+ int64_t delta_ftell;
DPRINTF("Enter save live iterate submitted %d transferred %d\n",
block_mig_state.submitted, block_mig_state.transferred);
@@ -677,7 +678,8 @@
}
qemu_put_be64(f, BLK_MIG_FLAG_EOS);
- return qemu_ftell(f) - last_ftell;
+ delta_ftell = qemu_ftell(f) - last_ftell;
+ return( (delta_ftell > 0) ? 1 : (delta_ftell < 0) ? -1 : 0 );
}
/* Called with iothread lock taken. */
[-- Attachment #2: Type: text/html, Size: 3956 bytes --]
next reply other threads:[~2014-11-12 18:48 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-12 18:48 Gary Hook [this message]
2014-11-12 20:27 ` [Qemu-devel] [PATCH 1/1] block migration: fix return value mismatch Eric Blake
2014-11-13 7:57 ` Markus Armbruster
2014-11-13 11:20 ` Stefan Hajnoczi
2014-11-13 12:46 ` Markus Armbruster
-- strict thread matches above, loose matches on Subject: below --
2014-11-13 16:43 Gary Hook
2014-11-13 16:44 Gary Hook
2014-11-13 17:03 ` Eric Blake
2014-11-13 17:32 ` Gary Hook
2014-11-13 18:55 ` Stefan Hajnoczi
2014-11-13 21:12 ` Gary R Hook
2014-11-21 18:08 Gary R Hook
2014-11-24 9:10 ` Dr. David Alan Gilbert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=D0890790.3A5A%gary.hook@nimboxx.com \
--to=gary.hook@nimboxx.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).