From: Damjan Marion Date: Tue, 12 Jan 2016 17:34:24 +0000 (+0100) Subject: Avoid crash in vhost-user driver when running multithreaded X-Git-Tag: v16.06-rc1~406^2 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=920ecc2e1ff2f1bdbd3698243cd1804b4bc2e269;p=vpp.git Avoid crash in vhost-user driver when running multithreaded Change-Id: Ib54575453fd26ba1a7256e9d583c8f8532613ebc Signed-off-by: Carsten Koester Signed-off-by: Damjan Marion --- 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))