Re: [PATCH] virtio: make virtio_add_queue() queue_size an unsigned int

Stefan Hajnoczi <[email protected]>
Newsgroups gmane.comp.emulators.qemu
Message-ID <CAJSP0QV5v9BEMG_Y8M73voTvLevRq+gaDbzExJQurew=M12amw@mail.gmail.com>
On Thu, Jul 30, 2026 at 12:02 PM Peter Maydell <[email protected]> wrote:
>
> On Thu, 30 Jul 2026 at 16:36, Stefan Hajnoczi <[email protected]> wrote:
> >
> > virtio_add_queue()'s queue_size argument is a signed int. Coverity is
> > unhappy when that type is used as an argument to g_new0():
> >
> >   *** CID 1664271:         Error handling issues  (NEGATIVE_RETURNS)
> >   /builds/qemu-project/qemu/hw/virtio/virtio.c: 2595             in virtio_add_queue()
> >   2589         }
> >   2590
> >   2591         vdev->vq[i].vring.num = queue_size;
> >   2592         vdev->vq[i].vring.num_default = queue_size;
> >   2593         vdev->vq[i].vring.align = VIRTIO_PCI_VRING_ALIGN;
> >   2594         vdev->vq[i].handle_output = handle_output;
> >   >>>     CID 1664271:         Error handling issues  (NEGATIVE_RETURNS)
> >   >>>     "__n" is passed to a parameter that cannot be negative.
> >   2595         vdev->vq[i].used_elems = g_new0(VirtQueueElement, queue_size);
>
> Though note that the reason Coverity thinks this value can be negative
> is not because the function might be passed a negative value, but
> because it incorrectly thinks that
>         int override = object_property_get_int(OBJECT(qbus->parent),
>                                                VIRTIO_QUEUE_SIZE_OVERRIDE,
>                                                &error_abort);
>
> can return a negative number. (It can't because of the error_abort
> and because the property is a UINT16 one.)
>
> It might be a good idea to enforce the VIRTQUEUE_MAX_SIZE bounds
> check on the queue size we get from the override property. Since
> I think that can be set by the end-user (though probably it won't
> be in practice) ideally we would not abort() on a bad property
> value, but that's awkward to do at this point...

I'll send a v2 that addresses VIRTIO_QUEUE_SIZE_OVERRIDE.

Stefan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.