All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Jes.Sorensen@redhat.com
Cc: qemu-devel@nongnu.org
Subject: [Qemu-devel] Re: [PATCH 2/2] Add proper -errno error return values to qcow2_open()
Date: Fri, 17 Dec 2010 15:27:15 +0100	[thread overview]
Message-ID: <4D0B7343.3080609@redhat.com> (raw)
In-Reply-To: <1292515532-24198-3-git-send-email-Jes.Sorensen@redhat.com>

Am 16.12.2010 17:05, schrieb Jes.Sorensen@redhat.com:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
> 
> In addition this adds missing braces to the function to be consistent
> with the coding style.
> 
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
>  block/qcow2.c |   61 ++++++++++++++++++++++++++++++++++++++++----------------
>  1 files changed, 43 insertions(+), 18 deletions(-)
> 
> diff --git a/block/qcow2.c b/block/qcow2.c
> index d7fd167..b4a9e5e 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -140,12 +140,14 @@ static int qcow2_read_extensions(BlockDriverState *bs, uint64_t start_offset,
>  static int qcow2_open(BlockDriverState *bs, int flags)
>  {
>      BDRVQcowState *s = bs->opaque;
> -    int len, i;
> +    int len, i, ret = 0;
>      QCowHeader header;
>      uint64_t ext_end;
>  
> -    if (bdrv_pread(bs->file, 0, &header, sizeof(header)) != sizeof(header))
> +    if (bdrv_pread(bs->file, 0, &header, sizeof(header)) != sizeof(header)) {
> +        ret = -EIO; 
>          goto fail;
> +    }

ret = bdrv_pread(...);
if (ret < 0) {
    goto fail;
}

We have a specific error code, so why throw it away?

>      be32_to_cpus(&header.magic);
>      be32_to_cpus(&header.version);
>      be64_to_cpus(&header.backing_file_offset);
> @@ -160,16 +162,23 @@ static int qcow2_open(BlockDriverState *bs, int flags)
>      be64_to_cpus(&header.snapshots_offset);
>      be32_to_cpus(&header.nb_snapshots);
>  
> -    if (header.magic != QCOW_MAGIC || header.version != QCOW_VERSION)
> +    if (header.magic != QCOW_MAGIC || header.version != QCOW_VERSION) {
> +        ret = -EINVAL;
>          goto fail;
> +    }
>      if (header.cluster_bits < MIN_CLUSTER_BITS ||
> -        header.cluster_bits > MAX_CLUSTER_BITS)
> +        header.cluster_bits > MAX_CLUSTER_BITS) {
> +        ret = -EINVAL;
>          goto fail;
> -    if (header.crypt_method > QCOW_CRYPT_AES)
> +    }
> +    if (header.crypt_method > QCOW_CRYPT_AES) {
> +        ret = -EINVAL;
>          goto fail;
> +    }
>      s->crypt_method_header = header.crypt_method;
> -    if (s->crypt_method_header)
> +    if (s->crypt_method_header) {
>          bs->encrypted = 1;
> +    }
>      s->cluster_bits = header.cluster_bits;
>      s->cluster_size = 1 << s->cluster_bits;
>      s->cluster_sectors = 1 << (s->cluster_bits - 9);
> @@ -191,15 +200,20 @@ static int qcow2_open(BlockDriverState *bs, int flags)
>      s->l1_vm_state_index = size_to_l1(s, header.size);
>      /* the L1 table must contain at least enough entries to put
>         header.size bytes */
> -    if (s->l1_size < s->l1_vm_state_index)
> +    if (s->l1_size < s->l1_vm_state_index) {
> +        ret = -EINVAL;
>          goto fail;
> +    }
>      s->l1_table_offset = header.l1_table_offset;
>      if (s->l1_size > 0) {
>          s->l1_table = qemu_mallocz(
>              align_offset(s->l1_size * sizeof(uint64_t), 512));
> -        if (bdrv_pread(bs->file, s->l1_table_offset, s->l1_table, s->l1_size * sizeof(uint64_t)) !=
> -            s->l1_size * sizeof(uint64_t))
> +        if (bdrv_pread(bs->file, s->l1_table_offset, s->l1_table,
> +                       s->l1_size * sizeof(uint64_t)) !=
> +            s->l1_size * sizeof(uint64_t)) {
> +            ret = -EIO;
>              goto fail;
> +        }

Same here.

>          for(i = 0;i < s->l1_size; i++) {
>              be64_to_cpus(&s->l1_table[i]);
>          }
> @@ -212,35 +226,46 @@ static int qcow2_open(BlockDriverState *bs, int flags)
>                                    + 512);
>      s->cluster_cache_offset = -1;
>  
> -    if (qcow2_refcount_init(bs) < 0)
> +    ret = qcow2_refcount_init(bs);
> +    if (ret != 0) {
>          goto fail;
> +    }
>  
>      QLIST_INIT(&s->cluster_allocs);
>  
>      /* read qcow2 extensions */
> -    if (header.backing_file_offset)
> +    if (header.backing_file_offset) {
>          ext_end = header.backing_file_offset;
> -    else
> +    } else {
>          ext_end = s->cluster_size;
> -    if (qcow2_read_extensions(bs, sizeof(header), ext_end))
> +    }
> +    if (qcow2_read_extensions(bs, sizeof(header), ext_end)) {
> +        ret = -EINVAL;
>          goto fail;
> +    }
>  
>      /* read the backing file name */
>      if (header.backing_file_offset != 0) {
>          len = header.backing_file_size;
> -        if (len > 1023)
> +        if (len > 1023) {
>              len = 1023;
> -        if (bdrv_pread(bs->file, header.backing_file_offset, bs->backing_file, len) != len)
> +        }
> +        if (bdrv_pread(bs->file, header.backing_file_offset,
> +                       bs->backing_file, len) != len) {
> +            ret = -EIO;
>              goto fail;
> +        }

And here.

Otherwise the patch looks good to me.

Kevin

  reply	other threads:[~2010-12-17 14:26 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-16 16:05 [Qemu-devel] [PATCH 0/2] qcow2 cleanups Jes.Sorensen
2010-12-16 16:05 ` [Qemu-devel] [PATCH 1/2] block/qcow2.c: rename qcow_ functions to qcow2_ Jes.Sorensen
2010-12-17 14:20   ` [Qemu-devel] " Kevin Wolf
2010-12-17 14:37     ` Jes Sorensen
2010-12-16 16:05 ` [Qemu-devel] [PATCH 2/2] Add proper -errno error return values to qcow2_open() Jes.Sorensen
2010-12-17 14:27   ` Kevin Wolf [this message]
2010-12-17 14:47     ` [Qemu-devel] " Jes Sorensen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4D0B7343.3080609@redhat.com \
    --to=kwolf@redhat.com \
    --cc=Jes.Sorensen@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.