> Subject: [PATCH v2] net/af_xdp: fix resources leak when xsk configure fails > > In xdp_umem_configure() allocated some resources for the > xsk umem, we should delete them when xsk configure fails, > otherwise it will lead to resources leak. > > Fixes: f1debd77efaf ("net/af_xdp: introduce AF_XDP PMD") > Cc: sta...@dpdk.org > > Signed-off-by: Yunjian Wang <wangyunj...@huawei.com>
Thanks! Reviewed-by <ciara.lof...@intel.com> > --- > v2: update code style as suggested by Maryam Tahhan > --- > drivers/net/af_xdp/rte_eth_af_xdp.c | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c > b/drivers/net/af_xdp/rte_eth_af_xdp.c > index 2d151e45c7..b52513bd7e 100644 > --- a/drivers/net/af_xdp/rte_eth_af_xdp.c > +++ b/drivers/net/af_xdp/rte_eth_af_xdp.c > @@ -960,6 +960,11 @@ remove_xdp_program(struct pmd_internals > *internals) > static void > xdp_umem_destroy(struct xsk_umem_info *umem) > { > + if (umem->umem) { > + (void)xsk_umem__delete(umem->umem); > + umem->umem = NULL; > + } > + > #if defined(XDP_UMEM_UNALIGNED_CHUNK_FLAG) > umem->mb_pool = NULL; > #else > @@ -992,11 +997,8 @@ eth_dev_close(struct rte_eth_dev *dev) > break; > xsk_socket__delete(rxq->xsk); > > - if (__atomic_fetch_sub(&rxq->umem->refcnt, 1, > __ATOMIC_ACQUIRE) - 1 > - == 0) { > - (void)xsk_umem__delete(rxq->umem->umem); > + if (__atomic_fetch_sub(&rxq->umem->refcnt, 1, > __ATOMIC_ACQUIRE) - 1 == 0) > xdp_umem_destroy(rxq->umem); > - } > > /* free pkt_tx_queue */ > rte_free(rxq->pair); > -- > 2.41.0