Reviewed-by: Jiayu Hu <jiayu...@intel.com>

> -----Original Message-----
> From: Jiang, Cheng1 <cheng1.ji...@intel.com>
> Sent: Tuesday, August 17, 2021 1:26 PM
> To: Ma, WenwuX <wenwux...@intel.com>; dev@dpdk.org
> Cc: maxime.coque...@redhat.com; Xia, Chenbo <chenbo....@intel.com>; Hu,
> Jiayu <jiayu...@intel.com>; sta...@dpdk.org
> Subject: RE: [PATCH] examples/vhost: fix memory leak on forwarding packets.
> 
> Acked-by: Cheng Jiang <cheng1.ji...@intel.com>
> 
> 
> 
> 
> > -----Original Message-----
> > From: Ma, WenwuX <wenwux...@intel.com>
> > Sent: Wednesday, August 18, 2021 1:13 AM
> > To: dev@dpdk.org
> > Cc: maxime.coque...@redhat.com; Xia, Chenbo <chenbo....@intel.com>;
> > Jiang, Cheng1 <cheng1.ji...@intel.com>; Hu, Jiayu
> > <jiayu...@intel.com>; Ma, WenwuX <wenwux...@intel.com>;
> > sta...@dpdk.org
> > Subject: [PATCH] examples/vhost: fix memory leak on forwarding packets.
> >
> > In function virtio_tx_local(), when the device receiving the packet is
> > the same as the device to which the packet is forwarded, or the device
> > is removed, we return but not free the packet, it will cause a memory leak.
> >
> > Fixes: 4796ad63ba1f ("examples/vhost: import userspace vhost
> > application")
> > Cc: sta...@dpdk.org
> >
> > Signed-off-by: Wenwu Ma <wenwux...@intel.com>
> > ---
> >  examples/vhost/main.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/examples/vhost/main.c b/examples/vhost/main.c index
> > bc3d71c898..07fd90ec64 100644
> > --- a/examples/vhost/main.c
> > +++ b/examples/vhost/main.c
> > @@ -965,6 +965,7 @@ virtio_tx_local(struct vhost_dev *vdev, struct
> > rte_mbuf *m)
> >             return -1;
> >
> >     if (vdev->vid == dst_vdev->vid) {
> > +           rte_pktmbuf_free(m);
> >             RTE_LOG_DP(DEBUG, VHOST_DATA,
> >                     "(%d) TX: src and dst MAC is same. Dropping
> packet.\n",
> >                     vdev->vid);
> > @@ -975,6 +976,7 @@ virtio_tx_local(struct vhost_dev *vdev, struct
> > rte_mbuf *m)
> >             "(%d) TX: MAC address is local\n", dst_vdev->vid);
> >
> >     if (unlikely(dst_vdev->remove)) {
> > +           rte_pktmbuf_free(m);
> >             RTE_LOG_DP(DEBUG, VHOST_DATA,
> >                     "(%d) device is marked for removal\n", dst_vdev-
> > >vid);
> >             return 0;
> > --
> > 2.25.1
> 

Reply via email to