From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 4227158C6; Mon, 18 Sep 2017 20:47:50 +0200 (CEST) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP; 18 Sep 2017 11:47:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,414,1500966000"; d="scan'208";a="1173391286" Received: from silpixa00372839.ir.intel.com (HELO silpixa00372839.ger.corp.intel.com) ([10.237.222.154]) by orsmga001.jf.intel.com with ESMTP; 18 Sep 2017 11:47:47 -0700 From: Ferruh Yigit To: Pascal Mazon Cc: dev@dpdk.org, Keith Wiles , Ferruh Yigit , Vipin Varghese , stable@dpdk.org Date: Mon, 18 Sep 2017 19:47:35 +0100 Message-Id: <20170918184735.43968-2-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170918184735.43968-1-ferruh.yigit@intel.com> References: <20170918184735.43968-1-ferruh.yigit@intel.com> Subject: [dpdk-dev] [PATCH 2/2] net/tap: fix unregistering callback with invalid fd X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Sep 2017 18:47:50 -0000 From: Vipin Varghese 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 --- 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 00dad167f..fcfd4215e 100644 --- a/drivers/net/tap/rte_eth_tap.c +++ b/drivers/net/tap/rte_eth_tap.c @@ -1098,10 +1098,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.13.5