Signed-off-by: Fam Zheng <f...@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(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c index 74205b4..c727277 100644 --- a/hw/net/virtio-net.c +++ b/hw/net/virtio-net.c @@ -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++) { diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index b473f9d..6dfa181 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -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; diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index b31465f..52e2b1c 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -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); -- 1.9.3