218e99
From 2ded69dfa67b8243d579e26839db43a288c251b8 Mon Sep 17 00:00:00 2001
218e99
From: Max Reitz <mreitz@redhat.com>
218e99
Date: Mon, 4 Nov 2013 22:32:25 +0100
218e99
Subject: [PATCH 32/87] qcow2: Correct endianness in overlap check
218e99
218e99
RH-Author: Max Reitz <mreitz@redhat.com>
218e99
Message-id: <1383604354-12743-35-git-send-email-mreitz@redhat.com>
218e99
Patchwork-id: 55334
218e99
O-Subject: [RHEL-7.0 qemu-kvm PATCH 34/43] qcow2: Correct endianness in overlap check
218e99
Bugzilla: 1004347
218e99
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
218e99
RH-Acked-by: Laszlo Ersek <lersek@redhat.com>
218e99
RH-Acked-by: Fam Zheng <famz@redhat.com>
218e99
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
218e99
218e99
BZ: 1004347
218e99
218e99
If an inactive L1 table is loaded from disk, its entries are in big
218e99
endian and have to be converted to host byte order before using them.
218e99
218e99
Signed-off-by: Max Reitz <mreitz@redhat.com>
218e99
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
218e99
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
218e99
(cherry picked from commit 1e242b5544a48bc43eca9c637dc91ec06bcf3a31)
218e99
218e99
Signed-off-by: Max Reitz <mreitz@redhat.com>
218e99
---
218e99
 block/qcow2-refcount.c | 4 ++--
218e99
 1 file changed, 2 insertions(+), 2 deletions(-)
218e99
218e99
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
218e99
---
218e99
 block/qcow2-refcount.c |    4 ++--
218e99
 1 files changed, 2 insertions(+), 2 deletions(-)
218e99
218e99
diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c
218e99
index 2a589b8..34fcf2f 100644
218e99
--- a/block/qcow2-refcount.c
218e99
+++ b/block/qcow2-refcount.c
218e99
@@ -1713,8 +1713,8 @@ int qcow2_check_metadata_overlap(BlockDriverState *bs, int chk, int64_t offset,
218e99
             }
218e99
 
218e99
             for (j = 0; j < l1_sz; j++) {
218e99
-                if ((l1[j] & L1E_OFFSET_MASK) &&
218e99
-                    overlaps_with(l1[j] & L1E_OFFSET_MASK, s->cluster_size)) {
218e99
+                uint64_t l2_ofs = be64_to_cpu(l1[j]) & L1E_OFFSET_MASK;
218e99
+                if (l2_ofs && overlaps_with(l2_ofs, s->cluster_size)) {
218e99
                     g_free(l1);
218e99
                     return QCOW2_OL_INACTIVE_L2;
218e99
                 }
218e99
-- 
218e99
1.7.1
218e99