qcow2: Fix grow_refcount_table error handling

In case of failure, we haven't increased the refcount for the newly allocated
cluster yet. Therefore we must not free the cluster or its refcount will become
negative (and endless recursion is possible).

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
Kevin Wolf 2009-10-15 17:31:01 +02:00 committed by Anthony Liguori
parent dcc7e25fd1
commit c5baaa489f

View File

@ -182,7 +182,6 @@ static int grow_refcount_table(BlockDriverState *bs, int min_size)
qcow2_free_clusters(bs, old_table_offset, old_table_size * sizeof(uint64_t)); qcow2_free_clusters(bs, old_table_offset, old_table_size * sizeof(uint64_t));
return 0; return 0;
fail: fail:
qcow2_free_clusters(bs, table_offset, new_table_size2);
qemu_free(new_table); qemu_free(new_table);
return -EIO; return -EIO;
} }