From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from out3-smtp.messagingengine.com (out3-smtp.messagingengine.com [66.111.4.27]) by dpdk.org (Postfix) with ESMTP id C2BE2187 for ; Sun, 22 Apr 2018 17:11:38 +0200 (CEST) Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 5D8F520EDC; Sun, 22 Apr 2018 11:11:38 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sun, 22 Apr 2018 11:11:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fridaylinux.org; h=cc:date:from:in-reply-to:message-id:references:subject:to :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=yTtlQtR40YB60CJlr J9ib+aoraVM5zLoiFFoLaSTN8o=; b=bKQ1Ukol3QgycwF2VfSJ+UTkGaWmWlBUM y93kO6oCZnM0dxRKwjVqYRO+Zo+ZziTN9JigPwHOcrL5tTMNIAiEHkC14ouaDRAf JgTnwAlTkqU7tf9/azEYWMFixrHivPGob4SyYZjLMBbYDn2e9/1W1GjORbx1Ak0Q l811nY1wfwIrjHNXiHixFRORADcFnxORRY6dckFE//1CUtSb4xIMsDge5WHYlL4x 2JKGBkoelDDl7Qr+KGuva1N1dSmKgy44MOxzhdWZGaSUTHsBzrzM/ATuB4oHIL6H tb9n1iRDK+yUt8gaY1OeYWH8PCBMYjrAKyYRofHvZ8ZYxnpsyAvsg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:date:from:in-reply-to:message-id :references:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= fm2; bh=yTtlQtR40YB60CJlrJ9ib+aoraVM5zLoiFFoLaSTN8o=; b=SB4NhkZ5 2Mavjl9FSvDgiu+i0oYwOCCgfHdq/7frOcjJxPqjCaB3C0U09h4MBY4KUCCHbxor nlbx8xJz1sexnbck9ZMND2p7nOHoUSFGrM9jRrWqyssdLvUvCx886v9O9sgdoWgw r8TO/b586zb3rhrQ0wW4wwE9dCg6fVPtImFrRqtNbS+AyicID+XrnGHM5oHkuz6f q9w205zmb7T7O2ALtQ50bbg03DB2xhj/DPIH59YE/al//TuSONTGbL1XtcJOcyWG MkG+QFBYH5mOTOKfUo8qHzgxnTwF83ZOKGnzTAwRAo5pG11ALVUCIVrNtjwOlk8/ kxOyOUTx1h+SzQ== X-ME-Sender: Received: from yuanhanliu-NB0.tencent.com (unknown [223.74.148.66]) by mail.messagingengine.com (Postfix) with ESMTPA id D378010262; Sun, 22 Apr 2018 11:11:35 -0400 (EDT) From: Yuanhan Liu To: Matan Azrad Cc: Ferruh Yigit , Thomas Monjalon , dpdk stable Date: Sun, 22 Apr 2018 23:09:25 +0800 Message-Id: <20180422150949.17523-35-yliu@fridaylinux.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180422150949.17523-1-yliu@fridaylinux.org> References: <20180422150949.17523-1-yliu@fridaylinux.org> Subject: [dpdk-stable] patch 'ethdev: fix port accessing after release' has been queued to LTS release 17.11.2 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Apr 2018 15:11:39 -0000 Hi, FYI, your patch has been queued to LTS release 17.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 04/29/18. So please shout if anyone has objections. Thanks. --yliu --- >>From e59f537227090d28bf2b3563f2d794070642c305 Mon Sep 17 00:00:00 2001 From: Matan Azrad Date: Wed, 28 Mar 2018 12:10:30 +0000 Subject: [PATCH] ethdev: fix port accessing after release [ upstream commit f0e1180cb6a99825587ce4c108c4366023ac1f63 ] rte_eth_dev_pci_release() function wrongly releases an ethdev port and then releases internal fields of this port. This behavior is problematic, because after the release, the port may be reallocated again by another thread or just be invalid for any usage. Move the release operation to the end of the function. Fixes: dcd5c8112bc3 ("ethdev: add PCI driver helpers") Suggested-by: Ferruh Yigit Signed-off-by: Matan Azrad Acked-by: Thomas Monjalon --- lib/librte_ether/rte_ethdev_pci.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/librte_ether/rte_ethdev_pci.h b/lib/librte_ether/rte_ethdev_pci.h index ad64a169c..f69316d53 100644 --- a/lib/librte_ether/rte_ethdev_pci.h +++ b/lib/librte_ether/rte_ethdev_pci.h @@ -123,9 +123,6 @@ rte_eth_dev_pci_allocate(struct rte_pci_device *dev, size_t private_data_size) static inline void rte_eth_dev_pci_release(struct rte_eth_dev *eth_dev) { - /* free ether device */ - rte_eth_dev_release_port(eth_dev); - if (rte_eal_process_type() == RTE_PROC_PRIMARY) rte_free(eth_dev->data->dev_private); @@ -139,6 +136,9 @@ rte_eth_dev_pci_release(struct rte_eth_dev *eth_dev) eth_dev->device = NULL; eth_dev->intr_handle = NULL; + + /* free ether device */ + rte_eth_dev_release_port(eth_dev); } typedef int (*eth_dev_pci_callback_t)(struct rte_eth_dev *eth_dev); -- 2.11.0