On 4/7/2020 5:23 AM, wangyunjian wrote: > From: Yunjian Wang <wangyunj...@huawei.com> > > The "internals->nlsk_fd" is possibly a zero value. Error comparison > should check for negative fd. > > Fixes: de96fe68ae95 ("net/tap: add basic flow API patterns and actions") > CC: sta...@dpdk.org > > Signed-off-by: Yunjian Wang <wangyunj...@huawei.com> > --- > drivers/net/tap/rte_eth_tap.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c > index 88cd615e0..ff149342b 100644 > --- a/drivers/net/tap/rte_eth_tap.c > +++ b/drivers/net/tap/rte_eth_tap.c > @@ -2442,7 +2442,7 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev) > TAP_LOG(DEBUG, "Closing %s Ethernet device on numa %u", > tuntap_types[internals->type], rte_socket_id()); > > - if (internals->nlsk_fd) { > + if (internals->nlsk_fd >= 0) {
I guess it is unlikely socket() will return 0 as fd, but technically it seems possible. 'tap_nl_init()' either returns '-1' for error or a valid fd, and this has been checked as "pmd->nlsk_fd == -1" in other locations, what about doing similar here: "if (internals->nlsk_fd != -1)" > tap_flow_flush(eth_dev, NULL); > tap_flow_implicit_flush(internals, NULL); > tap_nl_final(internals->nlsk_fd); >