diff mbox series

[05/21] parallels: return earlier from parallels_open() function on error

Message ID 20230915184130.403366-7-den@openvz.org (mailing list archive)
State New, archived
Headers show
Series implement discard operation for Parallels images | expand

Commit Message

Denis V. Lunev Sept. 15, 2023, 6:41 p.m. UTC
At the beginning of the function we can return immediately until we
really allocate s->header.

Signed-off-by: Denis V. Lunev <den@openvz.org>
---
 block/parallels.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

Comments

Alexander Ivanov Sept. 18, 2023, 8:17 a.m. UTC | #1
On 9/15/23 20:41, Denis V. Lunev wrote:
> At the beginning of the function we can return immediately until we
> really allocate s->header.
>
> Signed-off-by: Denis V. Lunev <den@openvz.org>
> ---
>   block/parallels.c | 14 +++++---------
>   1 file changed, 5 insertions(+), 9 deletions(-)
>
> diff --git a/block/parallels.c b/block/parallels.c
> index 0f127427bf..8f223bfd89 100644
> --- a/block/parallels.c
> +++ b/block/parallels.c
> @@ -1084,7 +1084,7 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
>   
>       ret = bdrv_pread(bs->file, 0, sizeof(ph), &ph, 0);
>       if (ret < 0) {
> -        goto fail;
> +        return ret;
>       }
>   
>       bs->total_sectors = le64_to_cpu(ph.nb_sectors);
> @@ -1104,13 +1104,11 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
>       s->tracks = le32_to_cpu(ph.tracks);
>       if (s->tracks == 0) {
>           error_setg(errp, "Invalid image: Zero sectors per track");
> -        ret = -EINVAL;
> -        goto fail;
> +        return -EINVAL;
>       }
>       if (s->tracks > INT32_MAX/513) {
>           error_setg(errp, "Invalid image: Too big cluster");
> -        ret = -EFBIG;
> -        goto fail;
> +        return -EFBIG;
>       }
>       s->prealloc_size = MAX(s->tracks, s->prealloc_size);
>       s->cluster_size = s->tracks << BDRV_SECTOR_BITS;
> @@ -1118,16 +1116,14 @@ static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
>       s->bat_size = le32_to_cpu(ph.bat_entries);
>       if (s->bat_size > INT_MAX / sizeof(uint32_t)) {
>           error_setg(errp, "Catalog too large");
> -        ret = -EFBIG;
> -        goto fail;
> +        return -EFBIG;
>       }
>   
>       size = bat_entry_off(s->bat_size);
>       s->header_size = ROUND_UP(size, bdrv_opt_mem_align(bs->file->bs));
>       s->header = qemu_try_blockalign(bs->file->bs, s->header_size);
>       if (s->header == NULL) {
> -        ret = -ENOMEM;
> -        goto fail;
> +        return -ENOMEM;
>       }
>   
>       ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0);

Reviewed-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
diff mbox series

Patch

diff --git a/block/parallels.c b/block/parallels.c
index 0f127427bf..8f223bfd89 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -1084,7 +1084,7 @@  static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
 
     ret = bdrv_pread(bs->file, 0, sizeof(ph), &ph, 0);
     if (ret < 0) {
-        goto fail;
+        return ret;
     }
 
     bs->total_sectors = le64_to_cpu(ph.nb_sectors);
@@ -1104,13 +1104,11 @@  static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
     s->tracks = le32_to_cpu(ph.tracks);
     if (s->tracks == 0) {
         error_setg(errp, "Invalid image: Zero sectors per track");
-        ret = -EINVAL;
-        goto fail;
+        return -EINVAL;
     }
     if (s->tracks > INT32_MAX/513) {
         error_setg(errp, "Invalid image: Too big cluster");
-        ret = -EFBIG;
-        goto fail;
+        return -EFBIG;
     }
     s->prealloc_size = MAX(s->tracks, s->prealloc_size);
     s->cluster_size = s->tracks << BDRV_SECTOR_BITS;
@@ -1118,16 +1116,14 @@  static int parallels_open(BlockDriverState *bs, QDict *options, int flags,
     s->bat_size = le32_to_cpu(ph.bat_entries);
     if (s->bat_size > INT_MAX / sizeof(uint32_t)) {
         error_setg(errp, "Catalog too large");
-        ret = -EFBIG;
-        goto fail;
+        return -EFBIG;
     }
 
     size = bat_entry_off(s->bat_size);
     s->header_size = ROUND_UP(size, bdrv_opt_mem_align(bs->file->bs));
     s->header = qemu_try_blockalign(bs->file->bs, s->header_size);
     if (s->header == NULL) {
-        ret = -ENOMEM;
-        goto fail;
+        return -ENOMEM;
     }
 
     ret = bdrv_pread(bs->file, 0, s->header_size, s->header, 0);