@@ -1310,7 +1310,7 @@ static void virtio_net_set_multiqueue(VirtIONet *n, int multiqueue)
n->multiqueue = multiqueue;
for (i = 2; i <= n->max_queues * 2 + 1; i++) {
- virtio_del_queue(vdev, i);
+ virtio_del_queue(vdev, i, &error_abort);
}
for (i = 1; i < max; i++) {
@@ -888,10 +888,11 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
return &vdev->vq[i];
}
-void virtio_del_queue(VirtIODevice *vdev, int n)
+void virtio_del_queue(VirtIODevice *vdev, int n, Error **errp)
{
if (n < 0 || n >= VIRTIO_PCI_QUEUE_MAX) {
- abort();
+ error_setg(errp, "Invalid queue number: %d", n);
+ return;
}
vdev->vq[n].vring.num = 0;
@@ -132,7 +132,7 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int queue_size,
VirtQueue *),
Error **errp);
-void virtio_del_queue(VirtIODevice *vdev, int n);
+void virtio_del_queue(VirtIODevice *vdev, int n, Error **errp);
void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
unsigned int len);
Signed-off-by: Fam Zheng <famz@redhat.com> --- hw/net/virtio-net.c | 2 +- hw/virtio/virtio.c | 5 +++-- include/hw/virtio/virtio.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-)