[PATCH] hw/virtio/vhost-shadow-virtqueue: Silence GCC error "maybe-uninitialized"

Bernhard Beschow posted 1 patch 1 year, 7 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220906171114.14839-1-shentey@gmail.com
Maintainers: "Michael S. Tsirkin" <mst@redhat.com>
There is a newer version of this series
hw/virtio/vhost-shadow-virtqueue.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] hw/virtio/vhost-shadow-virtqueue: Silence GCC error "maybe-uninitialized"
Posted by Bernhard Beschow 1 year, 7 months ago
GCC issues a false positive warning, resulting in build failure with -Werror:

  In file included from /usr/include/glib-2.0/glib.h:114,
                   from /home/zcone-pisint/Projects/qemu/src/include/glib-compat.h:32,
                   from /home/zcone-pisint/Projects/qemu/src/include/qemu/osdep.h:144,
                   from ../src/hw/virtio/vhost-shadow-virtqueue.c:10:
  In function ‘g_autoptr_cleanup_generic_gfree’,
      inlined from ‘vhost_handle_guest_kick’ at ../src/hw/virtio/vhost-shadow-virtqueue.c:292:42:
  /usr/include/glib-2.0/glib/glib-autocleanups.h:28:3: error: ‘elem’ may be used uninitialized [-Werror=maybe-uninitialized]
     28 |   g_free (*pp);
        |   ^~~~~~~~~~~~
  ../src/hw/virtio/vhost-shadow-virtqueue.c: In function ‘vhost_handle_guest_kick’:
  ../src/hw/virtio/vhost-shadow-virtqueue.c:292:42: note: ‘elem’ was declared here
    292 |             g_autofree VirtQueueElement *elem;
        |                                          ^~~~
  cc1: all warnings being treated as errors

There is actually no problem since "elem" is initialized in both branches.
Silence the warning by initializig it with "NULL".

Fixes: 9c2ab2f1ec333be8614cc12272d4b91960704dbe ("vhost: stop transfer elem ownership in vhost_handle_guest_kick")
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
 hw/virtio/vhost-shadow-virtqueue.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c
index e8e5bbc368..596d4434d2 100644
--- a/hw/virtio/vhost-shadow-virtqueue.c
+++ b/hw/virtio/vhost-shadow-virtqueue.c
@@ -289,7 +289,7 @@ static void vhost_handle_guest_kick(VhostShadowVirtqueue *svq)
         virtio_queue_set_notification(svq->vq, false);
 
         while (true) {
-            g_autofree VirtQueueElement *elem;
+            g_autofree VirtQueueElement *elem = NULL;
             int r;
 
             if (svq->next_guest_avail_elem) {
-- 
2.37.3


Re: [PATCH] hw/virtio/vhost-shadow-virtqueue: Silence GCC error "maybe-uninitialized"
Posted by Philippe Mathieu-Daudé via 1 year, 7 months ago
On Tue, Sep 6, 2022 at 7:12 PM Bernhard Beschow <shentey@gmail.com> wrote:
>
> GCC issues a false positive warning, resulting in build failure with -Werror:
>
>   In file included from /usr/include/glib-2.0/glib.h:114,
>                    from /home/zcone-pisint/Projects/qemu/src/include/glib-compat.h:32,
>                    from /home/zcone-pisint/Projects/qemu/src/include/qemu/osdep.h:144,
>                    from ../src/hw/virtio/vhost-shadow-virtqueue.c:10:
>   In function ‘g_autoptr_cleanup_generic_gfree’,
>       inlined from ‘vhost_handle_guest_kick’ at ../src/hw/virtio/vhost-shadow-virtqueue.c:292:42:
>   /usr/include/glib-2.0/glib/glib-autocleanups.h:28:3: error: ‘elem’ may be used uninitialized [-Werror=maybe-uninitialized]
>      28 |   g_free (*pp);
>         |   ^~~~~~~~~~~~
>   ../src/hw/virtio/vhost-shadow-virtqueue.c: In function ‘vhost_handle_guest_kick’:
>   ../src/hw/virtio/vhost-shadow-virtqueue.c:292:42: note: ‘elem’ was declared here
>     292 |             g_autofree VirtQueueElement *elem;
>         |                                          ^~~~
>   cc1: all warnings being treated as errors
>
> There is actually no problem since "elem" is initialized in both branches.
> Silence the warning by initializig it with "NULL".

Could you amend the first line of `gcc --version`?

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> Fixes: 9c2ab2f1ec333be8614cc12272d4b91960704dbe ("vhost: stop transfer elem ownership in vhost_handle_guest_kick")
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
>  hw/virtio/vhost-shadow-virtqueue.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c
> index e8e5bbc368..596d4434d2 100644
> --- a/hw/virtio/vhost-shadow-virtqueue.c
> +++ b/hw/virtio/vhost-shadow-virtqueue.c
> @@ -289,7 +289,7 @@ static void vhost_handle_guest_kick(VhostShadowVirtqueue *svq)
>          virtio_queue_set_notification(svq->vq, false);
>
>          while (true) {
> -            g_autofree VirtQueueElement *elem;
> +            g_autofree VirtQueueElement *elem = NULL;
>              int r;
>
>              if (svq->next_guest_avail_elem) {
> --
> 2.37.3
>
>
Re: [PATCH] hw/virtio/vhost-shadow-virtqueue: Silence GCC error "maybe-uninitialized"
Posted by Bernhard Beschow 1 year, 7 months ago
Am 6. September 2022 17:52:24 UTC schrieb "Philippe Mathieu-Daudé" <f4bug@amsat.org>:
>On Tue, Sep 6, 2022 at 7:12 PM Bernhard Beschow <shentey@gmail.com> wrote:
>>
>> GCC issues a false positive warning, resulting in build failure with -Werror:
>>
>>   In file included from /usr/include/glib-2.0/glib.h:114,
>>                    from /home/zcone-pisint/Projects/qemu/src/include/glib-compat.h:32,
>>                    from /home/zcone-pisint/Projects/qemu/src/include/qemu/osdep.h:144,
>>                    from ../src/hw/virtio/vhost-shadow-virtqueue.c:10:
>>   In function ‘g_autoptr_cleanup_generic_gfree’,
>>       inlined from ‘vhost_handle_guest_kick’ at ../src/hw/virtio/vhost-shadow-virtqueue.c:292:42:
>>   /usr/include/glib-2.0/glib/glib-autocleanups.h:28:3: error: ‘elem’ may be used uninitialized [-Werror=maybe-uninitialized]
>>      28 |   g_free (*pp);
>>         |   ^~~~~~~~~~~~
>>   ../src/hw/virtio/vhost-shadow-virtqueue.c: In function ‘vhost_handle_guest_kick’:
>>   ../src/hw/virtio/vhost-shadow-virtqueue.c:292:42: note: ‘elem’ was declared here
>>     292 |             g_autofree VirtQueueElement *elem;
>>         |                                          ^~~~
>>   cc1: all warnings being treated as errors
>>
>> There is actually no problem since "elem" is initialized in both branches.
>> Silence the warning by initializig it with "NULL".
>
>Could you amend the first line of `gcc --version`?

Hi Phil,

Yes, will do in v2.

Sorry for getting off-topic, but have you recognized my vt82c686 series? Your opinion would matter there and I'm not sure if my mail bounced. In my case Gmail likes to put your mail in the spam box :/

Regards,
Bernhard
>
>Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
>
>> Fixes: 9c2ab2f1ec333be8614cc12272d4b91960704dbe ("vhost: stop transfer elem ownership in vhost_handle_guest_kick")
>> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>> ---
>>  hw/virtio/vhost-shadow-virtqueue.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c
>> index e8e5bbc368..596d4434d2 100644
>> --- a/hw/virtio/vhost-shadow-virtqueue.c
>> +++ b/hw/virtio/vhost-shadow-virtqueue.c
>> @@ -289,7 +289,7 @@ static void vhost_handle_guest_kick(VhostShadowVirtqueue *svq)
>>          virtio_queue_set_notification(svq->vq, false);
>>
>>          while (true) {
>> -            g_autofree VirtQueueElement *elem;
>> +            g_autofree VirtQueueElement *elem = NULL;
>>              int r;
>>
>>              if (svq->next_guest_avail_elem) {
>> --
>> 2.37.3
>>
>>