This bug is easy to trigger. The following script will create and destroy a
qcow2 image (the header is gone after three loop iterations):
#!/bin/bash
qemu-img create -f qcow2 test.qcow 1M
for i in $(seq 1 10); do
qemu-system-x86_64 -hda test.qcow -monitor stdio > /dev/null 2>&1 <<EOF
savevm test-$i
quit
EOF
done
Signed-off-by: Kevin Wolf <address@hidden>
---
block-qcow2.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/block-qcow2.c b/block-qcow2.c
index da8fb42..985214f 100644
--- a/block-qcow2.c
+++ b/block-qcow2.c
@@ -1007,7 +1007,7 @@ static int alloc_cluster_link_l2(BlockDriverState *bs,
uint64_t cluster_offset,
goto err;
for (i = 0; i < j; i++)
- free_any_clusters(bs, old_cluster[i], 1);
+ free_any_clusters(bs, be64_to_cpu(old_cluster[i]), 1);
ret = 0;
err: