On 7/16/19 5:07 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 > > Reported-by: Thomas Huth <th...@redhat.com> > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> > Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > --- > block/nbd.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-)
Actually, since this patch didn't fix all the cases of use of an uninit variable, I'm wondering if this one-liner would be a better patch for the issue (that is, fix it so that nbd_co_receive_one_chunk never leaves reply uninit, rather than chasing down which callers might need init), and with a perk of not relying on a gcc extension: diff --git i/block/nbd.c w/block/nbd.c index 8d565cc624ec..f751a8e633e5 100644 --- i/block/nbd.c +++ w/block/nbd.c @@ -640,6 +640,7 @@ static coroutine_fn int nbd_co_receive_one_chunk( request_ret, qiov, payload, errp); if (ret < 0) { + memset(reply, 0, sizeof *reply); s->quit = true; } else { /* For assert at loop start in nbd_connection_entry */ -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
signature.asc
Description: OpenPGP digital signature