[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 6/6] parallels: Fix bdrv_open() error handling
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 6/6] parallels: Fix bdrv_open() error handling |
Date: |
Thu, 24 Jan 2013 14:47:56 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.1 (gnu/linux) |
Kevin Wolf <address@hidden> writes:
> Return -errno instead of -1 on errors. Hey, no memory leak to fix here
> while we're touching it!
I'm flabbergasted!
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
> block/parallels.c | 23 +++++++++++++++--------
> 1 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/block/parallels.c b/block/parallels.c
> index 3773750..8688f6c 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -73,14 +73,18 @@ static int parallels_open(BlockDriverState *bs, int flags)
> BDRVParallelsState *s = bs->opaque;
> int i;
> struct parallels_header ph;
> + int ret;
>
> bs->read_only = 1; // no write support yet
>
> - if (bdrv_pread(bs->file, 0, &ph, sizeof(ph)) != sizeof(ph))
> + ret = bdrv_pread(bs->file, 0, &ph, sizeof(ph));
> + if (ret < 0) {
> goto fail;
> + }
>
> if (memcmp(ph.magic, HEADER_MAGIC, 16) ||
> - (le32_to_cpu(ph.version) != HEADER_VERSION)) {
> + (le32_to_cpu(ph.version) != HEADER_VERSION)) {
> + ret = -EMEDIUMTYPE;
> goto fail;
> }
>
See my comment on -EMEDIUMTYPE in PATCH 3/6.
> @@ -90,18 +94,21 @@ static int parallels_open(BlockDriverState *bs, int flags)
>
> s->catalog_size = le32_to_cpu(ph.catalog_entries);
> s->catalog_bitmap = g_malloc(s->catalog_size * 4);
> - if (bdrv_pread(bs->file, 64, s->catalog_bitmap, s->catalog_size * 4) !=
> - s->catalog_size * 4)
> - goto fail;
> +
> + ret = bdrv_pread(bs->file, 64, s->catalog_bitmap, s->catalog_size * 4);
> + if (ret < 0) {
> + goto fail;
> + }
> +
> for (i = 0; i < s->catalog_size; i++)
> le32_to_cpus(&s->catalog_bitmap[i]);
>
> qemu_co_mutex_init(&s->lock);
> return 0;
> +
> fail:
> - if (s->catalog_bitmap)
> - g_free(s->catalog_bitmap);
> - return -1;
> + g_free(s->catalog_bitmap);
> + return ret;
> }
>
> static int64_t seek_to_sector(BlockDriverState *bs, int64_t sector_num)
- Re: [Qemu-devel] [PATCH 1/6] bochs: Fix bdrv_open() error handling, (continued)
[Qemu-devel] [PATCH 5/6] dmg: Use g_free instead of free, Kevin Wolf, 2013/01/24
[Qemu-devel] [PATCH 6/6] parallels: Fix bdrv_open() error handling, Kevin Wolf, 2013/01/24
- Re: [Qemu-devel] [PATCH 6/6] parallels: Fix bdrv_open() error handling,
Markus Armbruster <=
[Qemu-devel] [PATCH 4/6] dmg: Fix bdrv_open() error handling, Kevin Wolf, 2013/01/24
Re: [Qemu-devel] [PATCH 0/6] bdrv_open() error return fixes, Anthony Liguori, 2013/01/25