diff mbox

[2/5] libqos: fix virtio num_free descriptor counter

Message ID 1462437137-19824-3-git-send-email-stefanha@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Stefan Hajnoczi May 5, 2016, 8:32 a.m. UTC
The num_free variable is only ever decremented and never used for
anything.  Although it is currently useless and could be removed, it
will become important once a function is added to pop buffers from a
virtqueue.

This patch adds the missing num_free initialization and adds assertions
to check that there is enough space to add new descriptors.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 tests/libqos/virtio.c | 3 +++
 1 file changed, 3 insertions(+)
diff mbox

Patch

diff --git a/tests/libqos/virtio.c b/tests/libqos/virtio.c
index d3e4c02..939e5d3 100644
--- a/tests/libqos/virtio.c
+++ b/tests/libqos/virtio.c
@@ -140,6 +140,7 @@  void qvring_init(const QGuestAllocator *alloc, QVirtQueue *vq, uint64_t addr)
     vq->used = (uint64_t)((vq->avail + sizeof(uint16_t) * (3 + vq->size)
         + vq->align - 1) & ~(vq->align - 1));
     vq->free_head = 0;
+    vq->num_free = vq->size;
 
     for (i = 0; i < vq->size - 1; i++) {
         /* vq->desc[i].addr */
@@ -212,6 +213,7 @@  uint32_t qvirtqueue_add(QVirtQueue *vq, uint64_t data, uint32_t len, bool write,
     uint16_t flags = 0;
     uint16_t idx = vq->free_head;
 
+    g_assert_cmpint(vq->num_free, >=, 1);
     vq->num_free--;
 
     if (write) {
@@ -243,6 +245,7 @@  uint32_t qvirtqueue_add_indirect(QVirtQueue *vq, QVRingIndirectDesc *indirect)
     g_assert_cmpint(vq->size, >=, indirect->elem);
     g_assert_cmpint(indirect->index, ==, indirect->elem);
 
+    g_assert_cmpint(vq->num_free, >=, 1);
     vq->num_free--;
 
     /* vq->desc[vq->free_head].addr */