[dpdk-dev] [PATCH] net/af_xdp: fix failure on rte_dev_remove

William Tu u9012063 at gmail.com
Fri May 31 18:52:42 CEST 2019

When users call rte_eth_dev_close() and rte_dev_remove(), the af_xdp
pmd return -1 (EPERM) due to eth_dev == NULL.

Since the af_xdp pmd driver advertises RTE_ETH_DEV_CLOSE_REMOVE, all
the resources are freed on rte_eth_dev_close().  rte_dev_remove() tries
to detach device and subsequently calls rte_pmd_af_xdp_remove() that tries
to free already freed resources and fails. Fix it by return success.

Fixes: f1debd77efaf6 ("net/af_xdp: introduce AF_XDP PMD")
Reported-at: https://patchwork.ozlabs.org/patch/1106528/
Signed-off-by: William Tu <u9012063 at gmail.com>
Suggested-by: Ilya Maximets <i.maximets at samsung.com>
 drivers/net/af_xdp/rte_eth_af_xdp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/af_xdp/rte_eth_af_xdp.c b/drivers/net/af_xdp/rte_eth_af_xdp.c
index 35c72272c919..3dcc3628c5d0 100644
--- a/drivers/net/af_xdp/rte_eth_af_xdp.c
+++ b/drivers/net/af_xdp/rte_eth_af_xdp.c
@@ -944,7 +944,7 @@ rte_pmd_af_xdp_remove(struct rte_vdev_device *dev)
 	/* find the ethdev entry */
 	eth_dev = rte_eth_dev_allocated(rte_vdev_device_name(dev));
 	if (eth_dev == NULL)
-		return -1;
+		return 0;

More information about the dev mailing list