diff options
Diffstat (limited to 'tools/qemu/patches/0001-vmdk-fix-endianness-bugs.patch')
-rw-r--r-- | tools/qemu/patches/0001-vmdk-fix-endianness-bugs.patch | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/tools/qemu/patches/0001-vmdk-fix-endianness-bugs.patch b/tools/qemu/patches/0001-vmdk-fix-endianness-bugs.patch deleted file mode 100644 index 7e1abb49bf..0000000000 --- a/tools/qemu/patches/0001-vmdk-fix-endianness-bugs.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 6afca0fc5430db0300fe53f2b9cd7d071a3925bb Mon Sep 17 00:00:00 2001 -From: Alexander Graf <agraf@suse.de> -Date: Wed, 25 May 2011 00:46:55 +0200 -Subject: [PATCH 01/12] vmdk: fix endianness bugs - -The vmdk code is sloppy when handling the header descriptor during -creation of an image. Fix all header accesses in the create path to -either store native endianness or convert it when appropriate. - -Reported-by: Yury Tsarev <ytsarev@novell.com> -Signed-off-by: Alexander Graf <agraf@suse.de> -Signed-off-by: Kevin Wolf <kwolf@redhat.com> ---- - block/vmdk.c | 22 ++++++++++++++-------- - 1 file changed, 14 insertions(+), 8 deletions(-) - ---- a/block/vmdk.c -+++ b/block/vmdk.c -@@ -716,11 +716,11 @@ static int vmdk_create(const char *filen - return -errno; - magic = cpu_to_be32(VMDK4_MAGIC); - memset(&header, 0, sizeof(header)); -- header.version = cpu_to_le32(1); -- header.flags = cpu_to_le32(3); /* ?? */ -- header.capacity = cpu_to_le64(total_size); -- header.granularity = cpu_to_le64(128); -- header.num_gtes_per_gte = cpu_to_le32(512); -+ header.version = 1; -+ header.flags = 3; /* ?? */ -+ header.capacity = total_size; -+ header.granularity = 128; -+ header.num_gtes_per_gte = 512; - - grains = (total_size + header.granularity - 1) / header.granularity; - gt_size = ((header.num_gtes_per_gte * sizeof(uint32_t)) + 511) >> 9; -@@ -736,6 +736,12 @@ static int vmdk_create(const char *filen - header.granularity - 1) / header.granularity) * - header.granularity; - -+ /* swap endianness for all header fields */ -+ header.version = cpu_to_le32(header.version); -+ header.flags = cpu_to_le32(header.flags); -+ header.capacity = cpu_to_le64(header.capacity); -+ header.granularity = cpu_to_le64(header.granularity); -+ header.num_gtes_per_gte = cpu_to_le32(header.num_gtes_per_gte); - header.desc_offset = cpu_to_le64(header.desc_offset); - header.desc_size = cpu_to_le64(header.desc_size); - header.rgd_offset = cpu_to_le64(header.rgd_offset); -@@ -759,7 +765,7 @@ static int vmdk_create(const char *filen - goto exit; - } - -- ret = ftruncate(fd, header.grain_offset << 9); -+ ret = ftruncate(fd, le64_to_cpu(header.grain_offset) << 9); - if (ret < 0) { - ret = -errno; - goto exit; -@@ -767,7 +773,7 @@ static int vmdk_create(const char *filen - - /* write grain directory */ - lseek(fd, le64_to_cpu(header.rgd_offset) << 9, SEEK_SET); -- for (i = 0, tmp = header.rgd_offset + gd_size; -+ for (i = 0, tmp = le64_to_cpu(header.rgd_offset) + gd_size; - i < gt_count; i++, tmp += gt_size) { - ret = qemu_write_full(fd, &tmp, sizeof(tmp)); - if (ret != sizeof(tmp)) { -@@ -778,7 +784,7 @@ static int vmdk_create(const char *filen - - /* write backup grain directory */ - lseek(fd, le64_to_cpu(header.gd_offset) << 9, SEEK_SET); -- for (i = 0, tmp = header.gd_offset + gd_size; -+ for (i = 0, tmp = le64_to_cpu(header.gd_offset) + gd_size; - i < gt_count; i++, tmp += gt_size) { - ret = qemu_write_full(fd, &tmp, sizeof(tmp)); - if (ret != sizeof(tmp)) { |