From: Stefan Hajnoczi <stefa...@redhat.com> It is not possible to instantiate a virtio-blk device with 0 virtqueues. The following check is located in ->realize():
if (!conf->num_queues) { error_setg(errp, "num-queues property must be larger than 0"); return; } Later on we access s->vq_aio_context[0] under the assumption that there is as least one virtqueue. Hanna Czenczek <hre...@redhat.com> noted that it would help to show that the array index is already valid. Add an assertion to document that s->vq_aio_context[0] is always safe...and catch future code changes that break this assumption. Suggested-by: Hanna Czenczek <hre...@redhat.com> Reviewed-by: Manos Pitsidianakis <manos.pitsidiana...@linaro.org> Reviewed-by: Hanna Czenczek <hre...@redhat.com> Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> Message-ID: <20240206190610.107963-3-stefa...@redhat.com> Reviewed-by: Kevin Wolf <kw...@redhat.com> Reviewed-by: Michael S. Tsirkin <m...@redhat.com> Signed-off-by: Kevin Wolf <kw...@redhat.com> --- hw/block/virtio-blk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 6e3e3a23ee..e430ba583c 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -1824,6 +1824,7 @@ static int virtio_blk_start_ioeventfd(VirtIODevice *vdev) * Try to change the AioContext so that block jobs and other operations can * co-locate their activity in the same AioContext. If it fails, nevermind. */ + assert(nvqs > 0); /* enforced during ->realize() */ r = blk_set_aio_context(s->conf.conf.blk, s->vq_aio_context[0], &local_err); if (r < 0) { -- 2.43.0