aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2014-05-20 13:39:42 +0200
committerLuiz Capitulino <lcapitulino@redhat.com>2014-06-11 10:10:28 -0400
commit92ba1401e0f81ea170803045c1ae366bf5d9d87e (patch)
tree305f1cd5d33dfa900a5ebefc885087fd08ebd0d2
parentae3f88f60fb9f42bb3679311c2fbff8e1868ea47 (diff)
dump: simplify write_start_flat_header()
Currently, the function - defines and populates an auto variable of type MakedumpfileHeader - allocates and zeroes a buffer of size MAX_SIZE_MDF_HEADER (4096) - copies the former into the latter (covering an initial portion of the latter) Fill in the MakedumpfileHeader structure in its final place (the alignment is OK because the structure lives at the address returned by g_malloc0()). Approximately-suggested-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
-rw-r--r--dump.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/dump.c b/dump.c
index ac4505ec80..6dec8d2cf1 100644
--- a/dump.c
+++ b/dump.c
@@ -711,27 +711,25 @@ static int create_vmcore(DumpState *s)
static int write_start_flat_header(int fd)
{
- uint8_t *buf;
- MakedumpfileHeader mh;
+ MakedumpfileHeader *mh;
int ret = 0;
- memset(&mh, 0, sizeof(mh));
- memcpy(mh.signature, MAKEDUMPFILE_SIGNATURE,
- MIN(sizeof mh.signature, sizeof MAKEDUMPFILE_SIGNATURE));
+ QEMU_BUILD_BUG_ON(sizeof *mh > MAX_SIZE_MDF_HEADER);
+ mh = g_malloc0(MAX_SIZE_MDF_HEADER);
- mh.type = cpu_to_be64(TYPE_FLAT_HEADER);
- mh.version = cpu_to_be64(VERSION_FLAT_HEADER);
+ memcpy(mh->signature, MAKEDUMPFILE_SIGNATURE,
+ MIN(sizeof mh->signature, sizeof MAKEDUMPFILE_SIGNATURE));
- buf = g_malloc0(MAX_SIZE_MDF_HEADER);
- memcpy(buf, &mh, sizeof(mh));
+ mh->type = cpu_to_be64(TYPE_FLAT_HEADER);
+ mh->version = cpu_to_be64(VERSION_FLAT_HEADER);
size_t written_size;
- written_size = qemu_write_full(fd, buf, MAX_SIZE_MDF_HEADER);
+ written_size = qemu_write_full(fd, mh, MAX_SIZE_MDF_HEADER);
if (written_size != MAX_SIZE_MDF_HEADER) {
ret = -1;
}
- g_free(buf);
+ g_free(mh);
return ret;
}