Avoid crash in vhost-user driver when running multithreaded
[vpp.git] / vnet / vnet / devices / virtio / vhost-user.c
index 20a4c02..8dca33b 100644 (file)
@@ -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))