[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 01/22] vhost: Return earlier if used buffers overrun
|
From: |
Eugenio Pérez |
|
Subject: |
[PATCH 01/22] vhost: Return earlier if used buffers overrun |
|
Date: |
Fri, 8 Jul 2022 12:49:52 +0200 |
Previous function misses the just picked avail buffer from the queue.
This way keeps blocking the used queue forever, but is cleaner to check
before calling to vhost_svq_get_buf.
Fixes: 100890f7cad50 ("vhost: Shadow virtqueue buffers forwarding")
Acked-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
hw/virtio/vhost-shadow-virtqueue.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/hw/virtio/vhost-shadow-virtqueue.c
b/hw/virtio/vhost-shadow-virtqueue.c
index 56c96ebd13..9280285435 100644
--- a/hw/virtio/vhost-shadow-virtqueue.c
+++ b/hw/virtio/vhost-shadow-virtqueue.c
@@ -405,19 +405,21 @@ static void vhost_svq_flush(VhostShadowVirtqueue *svq,
vhost_svq_disable_notification(svq);
while (true) {
uint32_t len;
- g_autofree VirtQueueElement *elem = vhost_svq_get_buf(svq, &len);
- if (!elem) {
- break;
- }
+ g_autofree VirtQueueElement *elem = NULL;
if (unlikely(i >= svq->vring.num)) {
qemu_log_mask(LOG_GUEST_ERROR,
"More than %u used buffers obtained in a %u size SVQ",
i, svq->vring.num);
- virtqueue_fill(vq, elem, len, i);
- virtqueue_flush(vq, i);
+ virtqueue_flush(vq, svq->vring.num);
return;
}
+
+ elem = vhost_svq_get_buf(svq, &len);
+ if (!elem) {
+ break;
+ }
+
virtqueue_fill(vq, elem, len, i++);
}
--
2.31.1
- [PATCH 00/22] vdpa net devices Rx filter change notification with Shadow VQ, Eugenio Pérez, 2022/07/08
- [PATCH 01/22] vhost: Return earlier if used buffers overrun,
Eugenio Pérez <=
- [PATCH 02/22] vhost: move descriptor translation to vhost_svq_vring_write_descs, Eugenio Pérez, 2022/07/08
- [PATCH 03/22] vdpa: Clean vhost_vdpa_dev_start(dev, false), Eugenio Pérez, 2022/07/08
- [PATCH 04/22] virtio-net: Expose ctrl virtqueue logic, Eugenio Pérez, 2022/07/08
- [PATCH 06/22] vhost: Reorder vhost_svq_last_desc_of_chain, Eugenio Pérez, 2022/07/08
- [PATCH 05/22] vhost: Decouple vhost_svq_add_split from VirtQueueElement, Eugenio Pérez, 2022/07/08
- [PATCH 07/22] vhost: Add SVQElement, Eugenio Pérez, 2022/07/08
- [PATCH 08/22] vhost: Move last chain id to SVQ element, Eugenio Pérez, 2022/07/08
- [PATCH 11/22] vhost: add vhost_svq_push_elem, Eugenio Pérez, 2022/07/08
- [PATCH 10/22] vdpa: Small rename of error labels, Eugenio Pérez, 2022/07/08
- [PATCH 09/22] vhost: Add opaque member to SVQElement, Eugenio Pérez, 2022/07/08