From patchwork Thu Aug 25 13:41:30 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 15324 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 9371A567C; Thu, 25 Aug 2016 15:41:36 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 22496567A for ; Thu, 25 Aug 2016 15:41:34 +0200 (CEST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP; 25 Aug 2016 06:41:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,575,1464678000"; d="scan'208";a="160818033" Received: from irvmail001.ir.intel.com ([163.33.26.43]) by fmsmga004.fm.intel.com with ESMTP; 25 Aug 2016 06:41:33 -0700 Received: from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com [10.237.217.46]) by irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id u7PDfWmr007550; Thu, 25 Aug 2016 14:41:32 +0100 Received: from sivswdev02.ir.intel.com (localhost [127.0.0.1]) by sivswdev02.ir.intel.com with ESMTP id u7PDfW2H027461; Thu, 25 Aug 2016 14:41:32 +0100 Received: (from fyigit@localhost) by sivswdev02.ir.intel.com with id u7PDfWcu027457; Thu, 25 Aug 2016 14:41:32 +0100 X-Authentication-Warning: sivswdev02.ir.intel.com: fyigit set sender to ferruh.yigit@intel.com using -f From: Ferruh Yigit To: dev@dpdk.org Cc: ZhouYates Date: Thu, 25 Aug 2016 14:41:30 +0100 Message-Id: <1472132490-27425-1-git-send-email-ferruh.yigit@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: References: Subject: [dpdk-dev] [PATCH] kni: error rollback with kni_dev_remove could cause a kernel crash X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: ZhouYates Signed-off-by: ZhouYates --- lib/librte_eal/linuxapp/kni/kni_misc.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index 59d15ca..7ef17f5 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -448,7 +448,6 @@ kni_ioctl_create(struct net *net, kni = netdev_priv(net_dev); - kni->net_dev = net_dev; kni->group_id = dev_info.group_id; kni->core_id = dev_info.core_id; strncpy(kni->name, dev_info.name, RTE_KNI_NAMESIZE); @@ -561,6 +560,9 @@ kni_ioctl_create(struct net *net, kni_dev_remove(kni); return -ENODEV; } + /*Set the kni->net_dev when the net_dev has registered success. + * Avoid unregistering unregistered net_dev by kni_dev_remove.*/ + kni->net_dev = net_dev; #ifdef RTE_KNI_VHOST kni_vhost_init(kni);