From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id D044C58CD for ; Wed, 21 Jun 2017 04:59:43 +0200 (CEST) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP; 20 Jun 2017 19:59:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,367,1493708400"; d="scan'208";a="101830338" Received: from dpdk25.sh.intel.com ([10.67.111.75]) by orsmga002.jf.intel.com with ESMTP; 20 Jun 2017 19:59:42 -0700 From: Tiwei Bie To: dev@dpdk.org Date: Wed, 21 Jun 2017 10:57:59 +0800 Message-Id: <1498013885-102779-24-git-send-email-tiwei.bie@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1498013885-102779-1-git-send-email-tiwei.bie@intel.com> References: <1498013885-102779-1-git-send-email-tiwei.bie@intel.com> Subject: [dpdk-dev] [RFC 23/29] vhost: fix mbuf leak X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Jun 2017 02:59:44 -0000 Signed-off-by: Tiwei Bie --- lib/librte_vhost/virtio_net.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c index c14582b..2bd1298 100644 --- a/lib/librte_vhost/virtio_net.c +++ b/lib/librte_vhost/virtio_net.c @@ -1250,6 +1250,7 @@ vhost_dequeue_burst_1_1(struct virtio_net *dev, struct vhost_virtqueue *vq, struct vring_desc_1_1 *desc = vq->desc_1_1; uint16_t head_idx = vq->last_used_idx; uint16_t desc_idx; + int err; desc_idx = vq->last_used_idx; if (!(desc[desc_idx & (vq->size - 1)].flags & DESC_HW)) @@ -1268,7 +1269,11 @@ vhost_dequeue_burst_1_1(struct virtio_net *dev, struct vhost_virtqueue *vq, break; } - dequeue_desc(dev, vq, mbuf_pool, pkts[i], desc, &desc_idx); + err = dequeue_desc(dev, vq, mbuf_pool, pkts[i], desc, &desc_idx); + if (unlikely(err)) { + rte_pktmbuf_free(pkts[i]); + break; + } } vq->last_used_idx = desc_idx; -- 2.7.4