[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 16/16] migration/ram.c: Avoid taking address of field
From: |
Dr. David Alan Gilbert (git) |
Subject: |
[Qemu-devel] [PULL 16/16] migration/ram.c: Avoid taking address of fields in packed MultiFDInit_t struct |
Date: |
Wed, 26 Sep 2018 18:12:36 +0100 |
From: Peter Maydell <address@hidden>
Taking the address of a field in a packed struct is a bad idea, because
it might not be actually aligned enough for that pointer type (and
thus cause a crash on dereference on some host architectures). Newer
versions of clang warn about this:
migration/ram.c:651:19: warning: taking address of packed member 'magic' of
class or structure 'MultiFDInit_t' may result in an unaligned pointer value
[-Waddress-of-packed-member]
migration/ram.c:652:19: warning: taking address of packed member 'version' of
class or structure 'MultiFDInit_t' may result in an unaligned pointer value
[-Waddress-of-packed-member]
migration/ram.c:737:19: warning: taking address of packed member 'magic' of
class or structure 'MultiFDPacket_t' may result in an unaligned pointer value
[-Waddress-of-packed-member]
migration/ram.c:745:19: warning: taking address of packed member 'version' of
class or structure 'MultiFDPacket_t' may result in an unaligned pointer value
[-Waddress-of-packed-member]
migration/ram.c:755:19: warning: taking address of packed member 'size' of
class or structure 'MultiFDPacket_t' may result in an unaligned pointer value
[-Waddress-of-packed-member]
Avoid the bug by not using the "modify in place" byteswapping
functions.
Signed-off-by: Peter Maydell <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
Signed-off-by: Dr. David Alan Gilbert <address@hidden>
---
migration/ram.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index 408d237700..bc38d98cc3 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -651,8 +651,8 @@ static int multifd_recv_initial_packet(QIOChannel *c, Error
**errp)
return -1;
}
- be32_to_cpus(&msg.magic);
- be32_to_cpus(&msg.version);
+ msg.magic = be32_to_cpu(msg.magic);
+ msg.version = be32_to_cpu(msg.version);
if (msg.magic != MULTIFD_MAGIC) {
error_setg(errp, "multifd: received packet magic %x "
@@ -737,7 +737,7 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p,
Error **errp)
RAMBlock *block;
int i;
- be32_to_cpus(&packet->magic);
+ packet->magic = be32_to_cpu(packet->magic);
if (packet->magic != MULTIFD_MAGIC) {
error_setg(errp, "multifd: received packet "
"magic %x and expected magic %x",
@@ -745,7 +745,7 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p,
Error **errp)
return -1;
}
- be32_to_cpus(&packet->version);
+ packet->version = be32_to_cpu(packet->version);
if (packet->version != MULTIFD_VERSION) {
error_setg(errp, "multifd: received packet "
"version %d and expected version %d",
@@ -755,7 +755,7 @@ static int multifd_recv_unfill_packet(MultiFDRecvParams *p,
Error **errp)
p->flags = be32_to_cpu(packet->flags);
- be32_to_cpus(&packet->size);
+ packet->size = be32_to_cpu(packet->size);
if (packet->size > migrate_multifd_page_count()) {
error_setg(errp, "multifd: received packet "
"with size %d and expected maximum size %d",
--
2.17.1
- [Qemu-devel] [PULL 07/16] migration: use save_page_use_compression in flush_compressed_data, (continued)
- [Qemu-devel] [PULL 07/16] migration: use save_page_use_compression in flush_compressed_data, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 06/16] migration: show the statistics of compression, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 08/16] tests/migration: Convert x86 boot block compilation script into Makefile, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 09/16] tests/migration: Support cross compilation in generating boot header file, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 10/16] tests/migration: Add migration-test header file, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 11/16] migration/postcopy: Clear have_listen_thread, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 13/16] tests/migration: Speed up the test on ppc64, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 14/16] migration: fix QEMUFile leak, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 15/16] migration: fix the compression code, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 12/16] migration: cleanup in error paths in loadvm, Dr. David Alan Gilbert (git), 2018/09/26
- [Qemu-devel] [PULL 16/16] migration/ram.c: Avoid taking address of fields in packed MultiFDInit_t struct,
Dr. David Alan Gilbert (git) <=
- Re: [Qemu-devel] [PULL 00/16] migration queue, Peter Maydell, 2018/09/28