Patchwork [2/2] qcow2: fix unaligned access

login
register
mail settings
Submitter Aurelien Jarno
Date Jan. 1, 2011, 8:50 p.m.
Message ID <1293915034-26391-2-git-send-email-aurelien@aurel32.net>
Download mbox | patch
Permalink /patch/77153/
State New
Headers show

Comments

Aurelien Jarno - Jan. 1, 2011, 8:50 p.m.
cpu_to_be64w() is called with an obviously non-aligned pointer. Use
cpu_to_be64wu() instead. It fixes unaligned accesses errors on IA64
hosts.

Cc: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 block/qcow2-cluster.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Kevin Wolf - Jan. 10, 2011, 9:07 a.m.
Am 01.01.2011 21:50, schrieb Aurelien Jarno:
> cpu_to_be64w() is called with an obviously non-aligned pointer. Use
> cpu_to_be64wu() instead. It fixes unaligned accesses errors on IA64
> hosts.
> 
> Cc: Kevin Wolf <kwolf@redhat.com>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

Thanks, applied to the block branch.

Kevin

Patch

diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c
index 6928c63..c3ef550 100644
--- a/block/qcow2-cluster.c
+++ b/block/qcow2-cluster.c
@@ -81,7 +81,7 @@  int qcow2_grow_l1_table(BlockDriverState *bs, int min_size, bool exact_size)
     /* set new table */
     BLKDBG_EVENT(bs->file, BLKDBG_L1_GROW_ACTIVATE_TABLE);
     cpu_to_be32w((uint32_t*)data, new_l1_size);
-    cpu_to_be64w((uint64_t*)(data + 4), new_l1_table_offset);
+    cpu_to_be64wu((uint64_t*)(data + 4), new_l1_table_offset);
     ret = bdrv_pwrite_sync(bs->file, offsetof(QCowHeader, l1_size), data,sizeof(data));
     if (ret < 0) {
         goto fail;