From: Yunjian Wang <wangyunj...@huawei.com> Zero is a valid fd. It will fail to check the fd if the fd is zero.
Fixes: 527740ccfaec ("af_packet: fix some leaks") Cc: sta...@dpdk.org Signed-off-by: Yunjian Wang <wangyunj...@huawei.com> --- drivers/net/af_packet/rte_eth_af_packet.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index 22feb72..361b5d5 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -645,6 +645,8 @@ struct pmd_internals { for (q = 0; q < nb_queues; q++) { (*internals)->rx_queue[q].map = MAP_FAILED; (*internals)->tx_queue[q].map = MAP_FAILED; + (*internals)->rx_queue[q].sockfd = -1; + (*internals)->tx_queue[q].sockfd = -1; } req = &((*internals)->req); @@ -848,7 +850,7 @@ struct pmd_internals { rte_free((*internals)->rx_queue[q].rd); rte_free((*internals)->tx_queue[q].rd); - if (((*internals)->rx_queue[q].sockfd != 0) && + if (((*internals)->rx_queue[q].sockfd >= 0) && ((*internals)->rx_queue[q].sockfd != qsockfd)) close((*internals)->rx_queue[q].sockfd); } -- 1.8.3.1