[PATCH v2 09/22] hw/vhost-scsi: fix -Werror=maybe-uninitialized

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

../hw/scsi/vhost-scsi.c:173:12: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]

It can be reached when num_queues=0. It probably doesn't make much sense
to instantiate a vhost-scsi with 0 IO queues though. For now, make
vhost_scsi_set_workers() return success/0 anyway, when no workers have
been setup.

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

diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c
index 49cff2a0cb..22d16dc26b 100644
--- a/hw/scsi/vhost-scsi.c
+++ b/hw/scsi/vhost-scsi.c
@@ -172,7 +172,7 @@ static int vhost_scsi_set_workers(VHostSCSICommon *vsc, bool per_virtqueue)
     struct vhost_dev *dev = &vsc->dev;
     struct vhost_vring_worker vq_worker;
     struct vhost_worker_state worker;
-    int i, ret;
+    int i, ret = 0;
 
     /* Use default worker */
     if (!per_virtqueue || dev->nvqs == VHOST_SCSI_VQ_NUM_FIXED + 1) {
-- 
2.45.2.827.g557ae147e6


Re: [PATCH v2 09/22] hw/vhost-scsi: fix -Werror=maybe-uninitialized
Posted by Stefano Garzarella 3 weeks, 6 days ago
On Tue, Sep 24, 2024 at 05:05:40PM GMT, marcandre.lureau@redhat.com wrote:
>From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
>../hw/scsi/vhost-scsi.c:173:12: error: ‘ret’ may be used uninitialized [-Werror=maybe-uninitialized]
>
>It can be reached when num_queues=0. It probably doesn't make much sense
>to instantiate a vhost-scsi with 0 IO queues though. For now, make
>vhost_scsi_set_workers() return success/0 anyway, when no workers have
>been setup.

I agree, for vhost_scsi_set_workers() point of view, it doesn't need to
add a new worker in that case, so it should be fine to return 0.

If we really want to fail when num_queues=0, maybe it should be in
vhost_scsi_realize().

>
>Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
>---
> hw/scsi/vhost-scsi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>diff --git a/hw/scsi/vhost-scsi.c b/hw/scsi/vhost-scsi.c
>index 49cff2a0cb..22d16dc26b 100644
>--- a/hw/scsi/vhost-scsi.c
>+++ b/hw/scsi/vhost-scsi.c
>@@ -172,7 +172,7 @@ static int vhost_scsi_set_workers(VHostSCSICommon *vsc, bool per_virtqueue)
>     struct vhost_dev *dev = &vsc->dev;
>     struct vhost_vring_worker vq_worker;
>     struct vhost_worker_state worker;
>-    int i, ret;
>+    int i, ret = 0;
>
>     /* Use default worker */
>     if (!per_virtqueue || dev->nvqs == VHOST_SCSI_VQ_NUM_FIXED + 1) {

Another option could have been to edit this check:
       if (!per_virtqueue || dev->nvqs <= VHOST_SCSI_VQ_NUM_FIXED + 1) {
           return 0;
       }

But I'm fine with your change:

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>