diff options
-rw-r--r-- | vnet/vnet/devices/virtio/vhost-user.c | 6 |
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)) |