qcow2: Free allocated L2 cluster on error
If an error occurs in l2_allocate, the allocated (but unused) L2 cluster should be freed. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Benoit Canet <benoit@irqsave.net> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
fda74f826b
commit
e3b21ef9e0
@ -273,6 +273,10 @@ fail:
|
|||||||
qcow2_cache_put(bs, s->l2_table_cache, (void**) table);
|
qcow2_cache_put(bs, s->l2_table_cache, (void**) table);
|
||||||
}
|
}
|
||||||
s->l1_table[l1_index] = old_l2_offset;
|
s->l1_table[l1_index] = old_l2_offset;
|
||||||
|
if (l2_offset > 0) {
|
||||||
|
qcow2_free_clusters(bs, l2_offset, s->l2_size * sizeof(uint64_t),
|
||||||
|
QCOW2_DISCARD_ALWAYS);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user