[dpdk-dev,RFC,23/29] vhost: fix mbuf leak
Checks
Commit Message
Signed-off-by: Tiwei Bie <tiwei.bie@intel.com>
---
lib/librte_vhost/virtio_net.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
@@ -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;