[PATCH v2 06/22] block/mirror: fix -Werror=maybe-uninitialized false-positive

marcandre.lureau@redhat.com posted 22 patches 4 weeks ago
There is a newer version of this series
[PATCH v2 06/22] block/mirror: fix -Werror=maybe-uninitialized false-positive
Posted by marcandre.lureau@redhat.com 4 weeks ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

../block/mirror.c:404:5: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]
../block/mirror.c:895:12: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]
../block/mirror.c:578:12: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 block/mirror.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/block/mirror.c b/block/mirror.c
index 54e3a7ea9d..fd55a580fb 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -349,7 +349,7 @@ static void coroutine_fn mirror_co_read(void *opaque)
     MirrorOp *op = opaque;
     MirrorBlockJob *s = op->s;
     int nb_chunks;
-    uint64_t ret;
+    uint64_t ret = -1;
     uint64_t max_bytes;
 
     max_bytes = s->granularity * s->max_iov;
@@ -565,7 +565,7 @@ static void coroutine_fn GRAPH_UNLOCKED mirror_iteration(MirrorBlockJob *s)
 
     bitmap_set(s->in_flight_bitmap, offset / s->granularity, nb_chunks);
     while (nb_chunks > 0 && offset < s->bdev_length) {
-        int ret;
+        int ret = -1;
         int64_t io_bytes;
         int64_t io_bytes_acct;
         MirrorMethod mirror_method = MIRROR_METHOD_COPY;
@@ -841,7 +841,7 @@ static int coroutine_fn GRAPH_UNLOCKED mirror_dirty_init(MirrorBlockJob *s)
     int64_t offset;
     BlockDriverState *bs;
     BlockDriverState *target_bs = blk_bs(s->target);
-    int ret;
+    int ret = -1;
     int64_t count;
 
     bdrv_graph_co_rdlock();
-- 
2.45.2.827.g557ae147e6


Re: [PATCH v2 06/22] block/mirror: fix -Werror=maybe-uninitialized false-positive
Posted by Manos Pitsidianakis 3 weeks, 5 days ago
On Tue, 24 Sep 2024 16:05, marcandre.lureau@redhat.com wrote:
>From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
>../block/mirror.c:404:5: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]
>../block/mirror.c:895:12: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]
>../block/mirror.c:578:12: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]
>
>Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>---
> block/mirror.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
>diff --git a/block/mirror.c b/block/mirror.c
>index 54e3a7ea9d..fd55a580fb 100644
>--- a/block/mirror.c
>+++ b/block/mirror.c
>@@ -349,7 +349,7 @@ static void coroutine_fn mirror_co_read(void *opaque)
>     MirrorOp *op = opaque;
>     MirrorBlockJob *s = op->s;
>     int nb_chunks;
>-    uint64_t ret;
>+    uint64_t ret = -1;

This doesn't look right, `ret` should be int. It receives the return 
result of bdrv_co_preadv() which is int and is passed as an int argument 
to mirror_read_complete().

Not related to this patch obviously. But since you're touching this code 
maybe we could include this small cleanup?


>     uint64_t max_bytes;
> 
>     max_bytes = s->granularity * s->max_iov;
>@@ -565,7 +565,7 @@ static void coroutine_fn GRAPH_UNLOCKED mirror_iteration(MirrorBlockJob *s)
> 
>     bitmap_set(s->in_flight_bitmap, offset / s->granularity, nb_chunks);
>     while (nb_chunks > 0 && offset < s->bdev_length) {
>-        int ret;
>+        int ret = -1;
>         int64_t io_bytes;
>         int64_t io_bytes_acct;
>         MirrorMethod mirror_method = MIRROR_METHOD_COPY;
>@@ -841,7 +841,7 @@ static int coroutine_fn GRAPH_UNLOCKED mirror_dirty_init(MirrorBlockJob *s)
>     int64_t offset;
>     BlockDriverState *bs;
>     BlockDriverState *target_bs = blk_bs(s->target);
>-    int ret;
>+    int ret = -1;
>     int64_t count;
> 
>     bdrv_graph_co_rdlock();
>-- 
>2.45.2.827.g557ae147e6
>
>