From patchwork Mon Sep 18 18:47:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 28873 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5798F1AEEB; Mon, 18 Sep 2017 20:47:52 +0200 (CEST) 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 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 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) {