From d8f759a0ea03f8258db2b8e7fad3c7dffc8a9c39 Mon Sep 17 00:00:00 2001 From: Vipin Varghese Date: Mon, 18 Sep 2017 19:47:35 +0100 Subject: [PATCH] net/tap: fix unregistering callback with invalid fd tap_intr_handle_set() called by tap_dev_start(), and if LSC is disabled (dev_conf.intr_conf.lsc == 0), it tries to unregister interrupt callback without checking the interrupt file descriptor. Fixes: c0bddd3a057f ("net/tap: add link status notification") Cc: stable@dpdk.org Signed-off-by: Vipin Varghese Acked-by: Pascal Mazon --- drivers/net/tap/rte_eth_tap.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c index d926d4b06c..52380b4b54 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1132,10 +1132,11 @@ tap_intr_handle_set(struct rte_eth_dev *dev, int set) /* In any case, disable interrupt if the conf is no longer there. */ if (!dev->data->dev_conf.intr_conf.lsc) { - if (pmd->intr_handle.fd != -1) + if (pmd->intr_handle.fd != -1) { nl_final(pmd->intr_handle.fd); - rte_intr_callback_unregister( - &pmd->intr_handle, tap_dev_intr_handler, dev); + rte_intr_callback_unregister(&pmd->intr_handle, + tap_dev_intr_handler, dev); + } return 0; } if (set) { -- 2.20.1