[PATCH] tests/unit/test-block-iothread: fix maybe-uninitialized error on GCC 11

Emanuele Giuseppe Esposito posted 1 patch 3 years ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210319112218.49609-1-eesposit@redhat.com
tests/unit/test-block-iothread.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
[PATCH] tests/unit/test-block-iothread: fix maybe-uninitialized error on GCC 11
Posted by Emanuele Giuseppe Esposito 3 years ago
When building qemu with GCC 11, test-block-iothread produces the following
warning:

../tests/unit/test-block-iothread.c:148:11: error: ‘buf’ may be used
uninitialized [-Werror=maybe-uninitialized]

This is caused by buf[512] left uninitialized and passed to
bdrv_save_vmstate() that expects a const uint8_t *, so the compiler
assumes it will be read and expects the parameter to be initialized.

Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
 tests/unit/test-block-iothread.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c
index 3f866a35c6..8cf172cb7a 100644
--- a/tests/unit/test-block-iothread.c
+++ b/tests/unit/test-block-iothread.c
@@ -89,7 +89,7 @@ static void test_sync_op_pread(BdrvChild *c)
 
 static void test_sync_op_pwrite(BdrvChild *c)
 {
-    uint8_t buf[512];
+    uint8_t buf[512] = { 0 };
     int ret;
 
     /* Success */
@@ -117,7 +117,7 @@ static void test_sync_op_blk_pread(BlockBackend *blk)
 
 static void test_sync_op_blk_pwrite(BlockBackend *blk)
 {
-    uint8_t buf[512];
+    uint8_t buf[512] = { 0 };
     int ret;
 
     /* Success */
@@ -141,7 +141,7 @@ static void test_sync_op_load_vmstate(BdrvChild *c)
 
 static void test_sync_op_save_vmstate(BdrvChild *c)
 {
-    uint8_t buf[512];
+    uint8_t buf[512] = { 0 };
     int ret;
 
     /* Error: Driver does not support snapshots */
-- 
2.29.2


Re: [PATCH] tests/unit/test-block-iothread: fix maybe-uninitialized error on GCC 11
Posted by Paolo Bonzini 3 years ago
On 19/03/21 12:22, Emanuele Giuseppe Esposito wrote:
> When building qemu with GCC 11, test-block-iothread produces the following
> warning:
> 
> ../tests/unit/test-block-iothread.c:148:11: error: ‘buf’ may be used
> uninitialized [-Werror=maybe-uninitialized]
> 
> This is caused by buf[512] left uninitialized and passed to
> bdrv_save_vmstate() that expects a const uint8_t *, so the compiler
> assumes it will be read and expects the parameter to be initialized.
> 
> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> ---
>   tests/unit/test-block-iothread.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c
> index 3f866a35c6..8cf172cb7a 100644
> --- a/tests/unit/test-block-iothread.c
> +++ b/tests/unit/test-block-iothread.c
> @@ -89,7 +89,7 @@ static void test_sync_op_pread(BdrvChild *c)
>   
>   static void test_sync_op_pwrite(BdrvChild *c)
>   {
> -    uint8_t buf[512];
> +    uint8_t buf[512] = { 0 };
>       int ret;
>   
>       /* Success */
> @@ -117,7 +117,7 @@ static void test_sync_op_blk_pread(BlockBackend *blk)
>   
>   static void test_sync_op_blk_pwrite(BlockBackend *blk)
>   {
> -    uint8_t buf[512];
> +    uint8_t buf[512] = { 0 };
>       int ret;
>   
>       /* Success */
> @@ -141,7 +141,7 @@ static void test_sync_op_load_vmstate(BdrvChild *c)
>   
>   static void test_sync_op_save_vmstate(BdrvChild *c)
>   {
> -    uint8_t buf[512];
> +    uint8_t buf[512] = { 0 };
>       int ret;
>   
>       /* Error: Driver does not support snapshots */
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>


Re: [PATCH] tests/unit/test-block-iothread: fix maybe-uninitialized error on GCC 11
Posted by Alberto Garcia 3 years ago
On Fri 19 Mar 2021 12:22:18 PM CET, Emanuele Giuseppe Esposito <eesposit@redhat.com> wrote:
> When building qemu with GCC 11, test-block-iothread produces the following
> warning:
>
> ../tests/unit/test-block-iothread.c:148:11: error: ‘buf’ may be used
> uninitialized [-Werror=maybe-uninitialized]
>
> This is caused by buf[512] left uninitialized and passed to
> bdrv_save_vmstate() that expects a const uint8_t *, so the compiler
> assumes it will be read and expects the parameter to be initialized.
>
> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>

Reviewed-by: Alberto Garcia <berto@igalia.com>

Berto