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:
parent
dcc7e25fd1
commit
c5baaa489f
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user