diff options
author | 2016-01-14 18:48:26 +0000 | |
---|---|---|
committer | 2016-01-14 18:48:26 +0000 | |
commit | b1ee7bde52b2adae10335774521ca09d57e32a0a (patch) | |
tree | 186398a52ba5f66d96e028d6290388aa5eab4ec4 | |
parent | 9fb87553bec802552f09818c8fa2eab82c5eae92 (diff) | |
parent | 920ecc2e1ff2f1bdbd3698243cd1804b4bc2e269 (diff) |
Merge "Avoid crash in vhost-user driver when running multithreaded"
-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 20a4c021..8dca33b8 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)) |