summaryrefslogtreecommitdiffstats
path: root/vnet
diff options
context:
space:
mode:
Diffstat (limited to 'vnet')
-rw-r--r--vnet/vnet/devices/virtio/vhost-user.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/vnet/vnet/devices/virtio/vhost-user.c b/vnet/vnet/devices/virtio/vhost-user.c
index 20a4c021c6a..8dca33b82af 100644
--- a/vnet/vnet/devices/virtio/vhost-user.c
+++ b/vnet/vnet/devices/virtio/vhost-user.c
@@ -771,6 +771,9 @@ static u32 vhost_user_if_input ( vlib_main_t * vm,
if (PREDICT_FALSE(!txvq->desc))
return 0;
+ if (PREDICT_FALSE(!txvq->avail))
+ return 0;
+
/* do we have pending intterupts ? */
if ((txvq->n_since_last_int) && (txvq->int_deadline < now))
vhost_user_send_call(vm, txvq);
@@ -1037,6 +1040,9 @@ vhost_user_intfc_tx (vlib_main_t * vm,
if (PREDICT_FALSE(!rxvq->desc))
goto done2;
+ if (PREDICT_FALSE(!rxvq->avail))
+ goto done2;
+
if (PREDICT_FALSE(vui->lockp != 0))
{
while (__sync_lock_test_and_set (vui->lockp, 1))