[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 06/22] parallels: return earlier from parallels_open() function
From: |
Denis V. Lunev |
Subject: |
[PULL v2 06/22] parallels: return earlier from parallels_open() function on error |
Date: |
Thu, 21 Sep 2023 09:54:44 +0200 |
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>
Reviewed-by: Alexander Ivanov <alexander.ivanov@virtuozzo.com>
---
block/parallels.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/block/parallels.c b/block/parallels.c
index 12f38cf70b..bd26c8db63 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -1090,7 +1090,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);
@@ -1110,13 +1110,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;
@@ -1124,16 +1122,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);
--
2.34.1
- [PULL v2 00/22] implement discard operation for Parallels images, Denis V. Lunev, 2023/09/21
- [PULL v2 01/22] parallels: fix formatting in bdrv_parallels initialization, Denis V. Lunev, 2023/09/21
- [PULL v2 05/22] parallels: return earler in fail_format branch in parallels_open(), Denis V. Lunev, 2023/09/21
- [PULL v2 06/22] parallels: return earlier from parallels_open() function on error,
Denis V. Lunev <=
- [PULL v2 02/22] parallels: mark driver as supporting CBT, Denis V. Lunev, 2023/09/21
- [PULL v2 03/22] parallels: fix memory leak in parallels_open(), Denis V. Lunev, 2023/09/21
- [PULL v2 04/22] parallels: invent parallels_opts_prealloc() helper to parse prealloc opts, Denis V. Lunev, 2023/09/21
- [PULL v2 08/22] parallels: create mark_used() helper which sets bit in used bitmap, Denis V. Lunev, 2023/09/21
- [PULL v2 09/22] tests: ensure that image validation will not cure the corruption, Denis V. Lunev, 2023/09/21
- [PULL v2 07/22] parallels: refactor path when we need to re-check image in parallels_open, Denis V. Lunev, 2023/09/21
- [PULL v2 19/22] parallels: naive implementation of parallels_co_pdiscard, Denis V. Lunev, 2023/09/21
- [PULL v2 13/22] tests: fix broken deduplication check in parallels format test, Denis V. Lunev, 2023/09/21
- [PULL v2 10/22] parallels: fix broken parallels_check_data_off(), Denis V. Lunev, 2023/09/21
- [PULL v2 15/22] parallels: accept multiple clusters in mark_used(), Denis V. Lunev, 2023/09/21