From 6e2fad861a6dd80d8dafe71ae14f87a30add7366 Mon Sep 17 00:00:00 2001 From: Jiayu Hu Date: Wed, 25 Jul 2018 16:21:42 +0800 Subject: [PATCH] vhost: fix return value on dequeue path This patch fixes the incorrect return value for rte_vhost_dequeue_burst() when virtqueue is not enabled or virtqueue address translation fails. Fixes: 62250c1d0978 ("vhost: extract split ring handling from Rx and Tx functions") Signed-off-by: Jiayu Hu Reviewed-by: Jens Freimann Acked-by: Tiwei Bie --- lib/librte_vhost/virtio_net.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c index 07cc0c8458..a8b4c961cc 100644 --- a/lib/librte_vhost/virtio_net.c +++ b/lib/librte_vhost/virtio_net.c @@ -1594,15 +1594,19 @@ rte_vhost_dequeue_burst(int vid, uint16_t queue_id, if (unlikely(rte_spinlock_trylock(&vq->access_lock) == 0)) return 0; - if (unlikely(vq->enabled == 0)) + if (unlikely(vq->enabled == 0)) { + count = 0; goto out_access_unlock; + } if (dev->features & (1ULL << VIRTIO_F_IOMMU_PLATFORM)) vhost_user_iotlb_rd_lock(vq); if (unlikely(vq->access_ok == 0)) - if (unlikely(vring_translate(dev, vq) < 0)) + if (unlikely(vring_translate(dev, vq) < 0)) { + count = 0; goto out; + } /* * Construct a RARP broadcast packet, and inject it to the "pkts" -- 2.20.1