From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pascal Mazon Subject: Re: [PATCH 2/2] net/tap: fix unregistering callback with invalid fd Date: Tue, 19 Sep 2017 14:46:13 +0200 Message-ID: <4f36fa8e-8a03-2c59-eb0f-abc96ddc17d3@6wind.com> References: <20170918184735.43968-1-ferruh.yigit@intel.com> <20170918184735.43968-2-ferruh.yigit@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, Keith Wiles , Vipin Varghese , stable@dpdk.org To: Ferruh Yigit Return-path: Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by dpdk.org (Postfix) with ESMTP id 9098D1AF03 for ; Tue, 19 Sep 2017 14:46:15 +0200 (CEST) Received: by mail-wm0-f42.google.com with SMTP id 13so4909026wmq.2 for ; Tue, 19 Sep 2017 05:46:15 -0700 (PDT) In-Reply-To: <20170918184735.43968-2-ferruh.yigit@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Looks good. Best regards, Pascal Acked-by: Pascal Mazon On 18/09/2017 20:47, Ferruh Yigit wrote: > 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) {