[Qemu-devel] [PATCH] nbd: fix uninitialized variable warning

Marc-André Lureau posted 1 patch 4 years, 8 months ago
Test docker-clang@ubuntu failed
Test asan failed
Test docker-mingw@fedora passed
Test FreeBSD passed
Test s390x passed
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190716084240.17594-1-marcandre.lureau@redhat.com
Maintainers: Eric Blake <eblake@redhat.com>, Max Reitz <mreitz@redhat.com>, Kevin Wolf <kwolf@redhat.com>
There is a newer version of this series
block/nbd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[Qemu-devel] [PATCH] nbd: fix uninitialized variable warning
Posted by Marc-André Lureau 4 years, 8 months ago
../block/nbd.c: In function 'nbd_co_request':
../block/nbd.c:745:8: error: 'local_reply.type' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     if (chunk->type == NBD_REPLY_TYPE_NONE) {
        ^
../block/nbd.c:710:14: note: 'local_reply.type' was declared here
     NBDReply local_reply;
              ^~~~~~~~~~~
../block/nbd.c:710:14: error: 'local_reply.flags' may be used uninitialized in this function [-Werror=maybe-uninitialized]
../block/nbd.c:738:8: error: 'local_reply.<U4be0>.magic' may be used uninitialized in this function [-Werror=maybe-uninitialized]
     if (nbd_reply_is_simple(reply) || s->quit) {
        ^
../block/nbd.c:710:14: note: 'local_reply.<U4be0>.magic' was declared here
     NBDReply local_reply;
              ^~~~~~~~~~~
cc1: all warnings being treated as errors

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 block/nbd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/nbd.c b/block/nbd.c
index 81edabbf35..02eef09728 100644
--- a/block/nbd.c
+++ b/block/nbd.c
@@ -707,7 +707,7 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState *s,
                                          void **payload)
 {
     int ret, request_ret;
-    NBDReply local_reply;
+    NBDReply local_reply = { 0, };
     NBDStructuredReplyChunk *chunk;
     Error *local_err = NULL;
     if (s->quit) {
-- 
2.22.0.428.g6d5b264208


Re: [Qemu-devel] [PATCH] nbd: fix uninitialized variable warning
Posted by Philippe Mathieu-Daudé 4 years, 8 months ago
Hi Marc-André,

On 7/16/19 10:42 AM, Marc-André Lureau wrote:
> ../block/nbd.c: In function 'nbd_co_request':
> ../block/nbd.c:745:8: error: 'local_reply.type' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>      if (chunk->type == NBD_REPLY_TYPE_NONE) {
>         ^
> ../block/nbd.c:710:14: note: 'local_reply.type' was declared here
>      NBDReply local_reply;
>               ^~~~~~~~~~~
> ../block/nbd.c:710:14: error: 'local_reply.flags' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> ../block/nbd.c:738:8: error: 'local_reply.<U4be0>.magic' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>      if (nbd_reply_is_simple(reply) || s->quit) {
>         ^
> ../block/nbd.c:710:14: note: 'local_reply.<U4be0>.magic' was declared here
>      NBDReply local_reply;
>               ^~~~~~~~~~~
> cc1: all warnings being treated as errors

Thomas reported this error when compiling with -O3 few months ago [1].
Are you using that, or the latest GCC emit a warning even with no -O3?

Personally I'd add:

Fixes: 86f8cdf3db8
Reported-by: Thomas Huth <thuth@redhat.com>

> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  block/nbd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/block/nbd.c b/block/nbd.c
> index 81edabbf35..02eef09728 100644
> --- a/block/nbd.c
> +++ b/block/nbd.c
> @@ -707,7 +707,7 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState *s,
>                                           void **payload)
>  {
>      int ret, request_ret;
> -    NBDReply local_reply;
> +    NBDReply local_reply = { 0, };

Yesterday [2] Peter said: "= {}" is our standard struct-zero-initializer
so we should prefer that.

With {}:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

>      NBDStructuredReplyChunk *chunk;
>      Error *local_err = NULL;
>      if (s->quit) {
> 

[1] https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg07007.html
[2] https://lists.gnu.org/archive/html/qemu-devel/2019-07/msg03431.html

Re: [Qemu-devel] [PATCH] nbd: fix uninitialized variable warning
Posted by Marc-André Lureau 4 years, 8 months ago
Hi

On Tue, Jul 16, 2019 at 1:19 PM Philippe Mathieu-Daudé
<philmd@redhat.com> wrote:
>
> Hi Marc-André,
>
> On 7/16/19 10:42 AM, Marc-André Lureau wrote:
> > ../block/nbd.c: In function 'nbd_co_request':
> > ../block/nbd.c:745:8: error: 'local_reply.type' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >      if (chunk->type == NBD_REPLY_TYPE_NONE) {
> >         ^
> > ../block/nbd.c:710:14: note: 'local_reply.type' was declared here
> >      NBDReply local_reply;
> >               ^~~~~~~~~~~
> > ../block/nbd.c:710:14: error: 'local_reply.flags' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > ../block/nbd.c:738:8: error: 'local_reply.<U4be0>.magic' may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >      if (nbd_reply_is_simple(reply) || s->quit) {
> >         ^
> > ../block/nbd.c:710:14: note: 'local_reply.<U4be0>.magic' was declared here
> >      NBDReply local_reply;
> >               ^~~~~~~~~~~
> > cc1: all warnings being treated as errors
>
> Thomas reported this error when compiling with -O3 few months ago [1].

Thanks, I couldn't find a previous report.

> Are you using that, or the latest GCC emit a warning even with no -O3?

Right, the warning seems to appear with -O3 (I happen to have it with
mingw64-gcc-8.3.0-2.fc30.x86_64)

>
> Personally I'd add:
>
> Fixes: 86f8cdf3db8

Actually, it was there before, so I'll skip that.

> Reported-by: Thomas Huth <thuth@redhat.com>
>
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  block/nbd.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/block/nbd.c b/block/nbd.c
> > index 81edabbf35..02eef09728 100644
> > --- a/block/nbd.c
> > +++ b/block/nbd.c
> > @@ -707,7 +707,7 @@ static bool nbd_reply_chunk_iter_receive(BDRVNBDState *s,
> >                                           void **payload)
> >  {
> >      int ret, request_ret;
> > -    NBDReply local_reply;
> > +    NBDReply local_reply = { 0, };
>
> Yesterday [2] Peter said: "= {}" is our standard struct-zero-initializer
> so we should prefer that.
>
> With {}:
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

ok, thanks

>
> >      NBDStructuredReplyChunk *chunk;
> >      Error *local_err = NULL;
> >      if (s->quit) {
> >
>
> [1] https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg07007.html
> [2] https://lists.gnu.org/archive/html/qemu-devel/2019-07/msg03431.html

Re: [Qemu-devel] [PATCH] nbd: fix uninitialized variable warning
Posted by no-reply@patchew.org 4 years, 8 months ago
Patchew URL: https://patchew.org/QEMU/20190716084240.17594-1-marcandre.lureau@redhat.com/



Hi,

This series failed the asan build test. Please find the testing commands and
their output below. If you have Docker installed, you can probably reproduce it
locally.

=== TEST SCRIPT BEGIN ===
#!/bin/bash
make docker-image-fedora V=1 NETWORK=1
time make docker-test-debug@fedora TARGET_LIST=x86_64-softmmu J=14 NETWORK=1
=== TEST SCRIPT END ===

  CC      audio/noaudio.o
  CC      audio/wavaudio.o
  CC      audio/mixeng.o
/tmp/qemu-test/src/block/nbd.c:710:30: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces]
    NBDReply local_reply = { 0, };
                             ^
                             {}


The full log is available at
http://patchew.org/logs/20190716084240.17594-1-marcandre.lureau@redhat.com/testing.asan/?type=message.
---
Email generated automatically by Patchew [https://patchew.org/].
Please send your feedback to patchew-devel@redhat.com