From: Kevin Wolf Date: Wed, 20 Jan 2010 14:03:03 +0000 (+0100) Subject: qcow2: Fix error handling in grow_refcount_table X-Git-Tag: v0.13.0-rc0~1593 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f2b7c8b37045e0e030ef027cfb6d574558fb732a;p=thirdparty%2Fqemu.git qcow2: Fix error handling in grow_refcount_table Return the appropriate error code instead of -EIO. Signed-off-by: Kevin Wolf Signed-off-by: Anthony Liguori --- diff --git a/block/qcow2-refcount.c b/block/qcow2-refcount.c index 3a2d44a170c..6f449c6a70c 100644 --- a/block/qcow2-refcount.c +++ b/block/qcow2-refcount.c @@ -168,9 +168,12 @@ static int grow_refcount_table(BlockDriverState *bs, int min_size) cpu_to_be64w((uint64_t*)data, table_offset); cpu_to_be32w((uint32_t*)(data + 8), refcount_table_clusters); - if (bdrv_pwrite(s->hd, offsetof(QCowHeader, refcount_table_offset), - data, sizeof(data)) != sizeof(data)) + ret = bdrv_pwrite(s->hd, offsetof(QCowHeader, refcount_table_offset), + data, sizeof(data)); + if (ret != sizeof(data)) { goto fail; + } + qemu_free(s->refcount_table); old_table_offset = s->refcount_table_offset; old_table_size = s->refcount_table_size; @@ -183,7 +186,7 @@ static int grow_refcount_table(BlockDriverState *bs, int min_size) return 0; fail: qemu_free(new_table); - return -EIO; + return ret < 0 ? ret : -EIO; }