From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2EC0CA2E1B for ; Thu, 5 Sep 2019 12:19:34 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2768B1EF83; Thu, 5 Sep 2019 12:19:34 +0200 (CEST) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 2C5531EFAB for ; Thu, 5 Sep 2019 12:19:33 +0200 (CEST) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9800E83F4C; Thu, 5 Sep 2019 10:19:32 +0000 (UTC) Received: from rh.redhat.com (ovpn-117-52.ams2.redhat.com [10.36.117.52]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6513119C77; Thu, 5 Sep 2019 10:19:31 +0000 (UTC) From: Kevin Traynor To: Stephen Hemminger Cc: Suyang Ju , Matan Azrad , dpdk stable Date: Thu, 5 Sep 2019 11:17:47 +0100 Message-Id: <20190905101754.21933-47-ktraynor@redhat.com> In-Reply-To: <20190905101754.21933-1-ktraynor@redhat.com> References: <20190905101754.21933-1-ktraynor@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Thu, 05 Sep 2019 10:19:32 +0000 (UTC) Subject: [dpdk-stable] patch 'net/mlx4: fix crash on info query in secondary process' has been queued to LTS release 18.11.3 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: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to LTS release 18.11.3 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 09/12/19. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable-queue This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable-queue/commit/2609b07db9d1664b5b885c0b8773b70e1a2d20e2 Thanks. Kevin Traynor --- >From 2609b07db9d1664b5b885c0b8773b70e1a2d20e2 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 12 Jul 2019 13:54:24 -0700 Subject: [PATCH] net/mlx4: fix crash on info query in secondary process [ upstream commit 164cad78b040122eac581a905a466bd22e7e66b8 ] mlx4_dev_info_get calls mlx4_get_ifname, but mlx4_get_ifname uses priv->ctx which is not a valid pointer in a secondary process. The fix is to cache the value in primary. In the primary process, get and store the interface index of the device so that secondary process can see it. Bugzilla ID: 320 Fixes: 61cbdd419478 ("net/mlx4: separate device control functions") Reported-by: Suyang Ju Signed-off-by: Stephen Hemminger Acked-by: Matan Azrad --- drivers/net/mlx4/mlx4.c | 17 ++++++++--------- drivers/net/mlx4/mlx4.h | 1 + drivers/net/mlx4/mlx4_ethdev.c | 4 +--- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 4bc966d5f..4428edf10 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -521,4 +521,5 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) unsigned int vf; int i; + char ifname[IF_NAMESIZE]; (void)pci_drv; @@ -704,15 +705,13 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) /* Register MAC address. */ priv->mac[0] = mac; -#ifndef NDEBUG - { - char ifname[IF_NAMESIZE]; - if (mlx4_get_ifname(priv, &ifname) == 0) - DEBUG("port %u ifname is \"%s\"", - priv->port, ifname); - else - DEBUG("port %u ifname is unknown", priv->port); + if (mlx4_get_ifname(priv, &ifname) == 0) { + DEBUG("port %u ifname is \"%s\"", + priv->port, ifname); + priv->if_index = if_nametoindex(ifname); + } else { + DEBUG("port %u ifname is unknown", priv->port); } -#endif + /* Get actual MTU if possible. */ mlx4_mtu_get(priv, &priv->mtu); diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h index fc568eb3e..758b7aa43 100644 --- a/drivers/net/mlx4/mlx4.h +++ b/drivers/net/mlx4/mlx4.h @@ -85,4 +85,5 @@ struct mlx4_priv { struct ibv_pd *pd; /**< Protection Domain. */ /* Device properties. */ + unsigned int if_index; /**< Associated network device index */ uint16_t mtu; /**< Configured MTU. */ uint8_t port; /**< Physical port number. */ diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index 084b24e49..bd8b6982b 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -560,5 +560,4 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) struct mlx4_priv *priv = dev->data->dev_private; unsigned int max; - char ifname[IF_NAMESIZE]; /* FIXME: we should ask the device for these values. */ @@ -581,6 +580,5 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) info->rx_offload_capa = (mlx4_get_rx_port_offloads(priv) | info->rx_queue_offload_capa); - if (mlx4_get_ifname(priv, &ifname) == 0) - info->if_index = if_nametoindex(ifname); + info->if_index = priv->if_index; info->hash_key_size = MLX4_RSS_HASH_KEY_SIZE; info->speed_capa = -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-09-05 10:36:50.345136230 +0100 +++ 0047-net-mlx4-fix-crash-on-info-query-in-secondary-proces.patch 2019-09-05 10:36:47.554699469 +0100 @@ -1 +1 @@ -From 164cad78b040122eac581a905a466bd22e7e66b8 Mon Sep 17 00:00:00 2001 +From 2609b07db9d1664b5b885c0b8773b70e1a2d20e2 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 164cad78b040122eac581a905a466bd22e7e66b8 ] + @@ -15 +16,0 @@ -Cc: stable@dpdk.org @@ -27 +28 @@ -index d6e5753bf..931e4f4fe 100644 +index 4bc966d5f..4428edf10 100644 @@ -30 +31 @@ -@@ -764,4 +764,5 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) +@@ -521,4 +521,5 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) @@ -36 +37 @@ -@@ -1003,15 +1004,13 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) +@@ -704,15 +705,13 @@ mlx4_pci_probe(struct rte_pci_driver *pci_drv, struct rte_pci_device *pci_dev) @@ -60 +61 @@ -index 9bdbc6d40..982357716 100644 +index fc568eb3e..758b7aa43 100644 @@ -63 +64 @@ -@@ -160,4 +160,5 @@ struct mlx4_priv { +@@ -85,4 +85,5 @@ struct mlx4_priv { @@ -70 +71 @@ -index ceef92162..5d28c0116 100644 +index 084b24e49..bd8b6982b 100644 @@ -73 +74 @@ -@@ -617,5 +617,4 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) +@@ -560,5 +560,4 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) @@ -79 +80 @@ -@@ -638,6 +637,5 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info) +@@ -581,6 +580,5 @@ mlx4_dev_infos_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *info)