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 CC318A04F3 for ; Thu, 19 Dec 2019 15:35:00 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id C2ECB1B9BF; Thu, 19 Dec 2019 15:35:00 +0100 (CET) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id 4EE281BE8E for ; Thu, 19 Dec 2019 15:34:59 +0100 (CET) Received: by mail-wm1-f66.google.com with SMTP id 20so5728486wmj.4 for ; Thu, 19 Dec 2019 06:34:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=oIrCUP+KW1JX32lZVx/xHEXKP4BrN5NN8l6AO97ceps=; b=sBEvNtzo8P00yH0TJGuiTNNtPf7OWDC6iJVmS7UpYiwpJc4N016w/pbrAzST2jP+be HRyZ81nqNcBhdOOHHe24Z5vGHYCrPyrfVz4pCbS/BkzoD93FOQMs7gEID+v1B7vev8h/ r/xehg9VWy51s6JFthq3rkXhL8luDoqzf+nvSDP0hxbOba6fego9SH6LsEefif3yim/s M9U9mnrOfZ1StKaK6Ohjf18i2ns2aCyCNW9vTZlwyGntW2ffNXFwgv2q7gURq9kTUTLe jdPvp2IUG0rE8uphR7h9ocHZmVp4eQ8w6I52kJHvPSXmfx9Fa6D1Mq7VH4vQo8ErkMLW +7+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=oIrCUP+KW1JX32lZVx/xHEXKP4BrN5NN8l6AO97ceps=; b=bFRX2oVVcsJH4VcfEnNMULkAKHwicTgCLHOecZjJeL+Z4p+uBaBHepbq9nIBKmkpYk 7R9v3eq/I2eC6vpnbiIWfQfkhgCtKmSDFIm5DLKJfkF88cEF7td/Zme37ZqCXsY4CX79 SmdSWp7BMdZ0AtW9trvwA0e9nFtgytOiw3FKAKpRl8VqiDBgnrCGPL7OnwDmC3UABdnJ P35LFfU195zWSw5354PsG0EMe69dg0gHm3I+Dx2yT35JgFRsMD1Aa0rJPWetE8Nn+g7a gtIhh3r2LMcafjQZuyLodWPHO4ZA7PDBTuw0UPanLZb1nlFWVUp+z4QzPNVRdMK1z4Qo Q7og== X-Gm-Message-State: APjAAAWFcWxQ9xGu0dcVp2N9tMPLzERJz6kR7h1upOif7wFSF+/mMCw8 7exjArA2gXWcc7fqC7r1rIg= X-Google-Smtp-Source: APXvYqxdPwQA9jQwXoOhSTKq+Sv1rZ7j95/gOUh9mT1KsYz2s2UwEaRQWq4me7YgycVSvYvXJkwuIw== X-Received: by 2002:a1c:f001:: with SMTP id a1mr9894872wmb.76.1576766098992; Thu, 19 Dec 2019 06:34:58 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id b17sm6542146wrp.49.2019.12.19.06.34.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Dec 2019 06:34:58 -0800 (PST) From: luca.boccassi@gmail.com To: Lu Qiuwen Cc: Xiao Wang , Xiaolong Ye , dpdk stable Date: Thu, 19 Dec 2019 14:32:30 +0000 Message-Id: <20191219143447.21506-3-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191219143447.21506-1-luca.boccassi@gmail.com> References: <20191219143447.21506-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'net/fm10k: fix stats crash in multi-process' has been queued to LTS release 17.11.10 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 17.11.10 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 12/21/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. Thanks. Luca Boccassi --- >From e77625cfc20fcd6d8556755167c7c918b11f8be2 Mon Sep 17 00:00:00 2001 From: Lu Qiuwen Date: Wed, 7 Aug 2019 16:24:22 +0800 Subject: [PATCH] net/fm10k: fix stats crash in multi-process [ upstream commit 61874d3c0663504f83d93a4701627a5949160a0f ] The ops pointers in fm10k_stats_get() are set up from primary process, when secondary process calls these ops pointers, a segment fault will happen. Fixes: 7223d200c227 ("fm10k: add base driver") Signed-off-by: Lu Qiuwen Acked-by: Xiao Wang Reviewed-by: Xiaolong Ye --- drivers/net/fm10k/base/fm10k_api.c | 20 ++++++++++++++++---- drivers/net/fm10k/base/fm10k_pf.c | 4 ++-- drivers/net/fm10k/base/fm10k_pf.h | 6 ++++++ drivers/net/fm10k/base/fm10k_vf.c | 4 ++-- drivers/net/fm10k/base/fm10k_vf.h | 5 +++++ 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/drivers/net/fm10k/base/fm10k_api.c b/drivers/net/fm10k/base/fm10k_api.c index c49d20dfbd..e7b2fe710a 100644 --- a/drivers/net/fm10k/base/fm10k_api.c +++ b/drivers/net/fm10k/base/fm10k_api.c @@ -234,8 +234,14 @@ s32 fm10k_read_mac_addr(struct fm10k_hw *hw) * */ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { - if (hw->mac.ops.update_hw_stats) - hw->mac.ops.update_hw_stats(hw, stats); + switch (hw->mac.type) { + case fm10k_mac_pf: + return fm10k_update_hw_stats_pf(hw, stats); + case fm10k_mac_vf: + return fm10k_update_hw_stats_vf(hw, stats); + default: + break; + } } /** @@ -246,8 +252,14 @@ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) * */ void fm10k_rebind_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { - if (hw->mac.ops.rebind_hw_stats) - hw->mac.ops.rebind_hw_stats(hw, stats); + switch (hw->mac.type) { + case fm10k_mac_pf: + return fm10k_rebind_hw_stats_pf(hw, stats); + case fm10k_mac_vf: + return fm10k_rebind_hw_stats_vf(hw, stats); + default: + break; + } } /** diff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c index db5f4912f1..f5b6a9e2e0 100644 --- a/drivers/net/fm10k/base/fm10k_pf.c +++ b/drivers/net/fm10k/base/fm10k_pf.c @@ -1511,7 +1511,7 @@ const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = { * This function collects and aggregates global and per queue hardware * statistics. **/ -STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw, +void fm10k_update_hw_stats_pf(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { u32 timeout, ur, ca, um, xec, vlan_drop, loopback_drop, nodesc_drop; @@ -1584,7 +1584,7 @@ STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw, * This function resets the base for global and per queue hardware * statistics. **/ -STATIC void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw, +void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { DEBUGFUNC("fm10k_rebind_hw_stats_pf"); diff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h index ca125c2739..2c22bdd02f 100644 --- a/drivers/net/fm10k/base/fm10k_pf.h +++ b/drivers/net/fm10k/base/fm10k_pf.h @@ -184,4 +184,10 @@ extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[]; #endif s32 fm10k_init_ops_pf(struct fm10k_hw *hw); + +void fm10k_update_hw_stats_pf(struct fm10k_hw *hw, + struct fm10k_hw_stats *stats); + +void fm10k_rebind_hw_stats_pf(struct fm10k_hw *hw, + struct fm10k_hw_stats *stats); #endif /* _FM10K_PF_H */ diff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c index bd449773a1..2f4b5f5d22 100644 --- a/drivers/net/fm10k/base/fm10k_vf.c +++ b/drivers/net/fm10k/base/fm10k_vf.c @@ -526,7 +526,7 @@ const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = { * * This function collects and aggregates per queue hardware statistics. **/ -STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw, +void fm10k_update_hw_stats_vf(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { DEBUGFUNC("fm10k_update_hw_stats_vf"); @@ -541,7 +541,7 @@ STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw, * * This function resets the base for queue hardware statistics. **/ -STATIC void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw, +void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { DEBUGFUNC("fm10k_rebind_hw_stats_vf"); diff --git a/drivers/net/fm10k/base/fm10k_vf.h b/drivers/net/fm10k/base/fm10k_vf.h index 116c56fcce..d4edd330e8 100644 --- a/drivers/net/fm10k/base/fm10k_vf.h +++ b/drivers/net/fm10k/base/fm10k_vf.h @@ -89,4 +89,9 @@ extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[]; FM10K_MSG_HANDLER(FM10K_VF_MSG_ID_1588, fm10k_1588_msg_attr, func) s32 fm10k_init_ops_vf(struct fm10k_hw *hw); + +void fm10k_update_hw_stats_vf(struct fm10k_hw *hw, + struct fm10k_hw_stats *stats); +void fm10k_rebind_hw_stats_vf(struct fm10k_hw *hw, + struct fm10k_hw_stats *stats); #endif /* _FM10K_VF_H */ -- 2.20.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2019-12-19 14:32:26.469374348 +0000 +++ 0003-net-fm10k-fix-stats-crash-in-multi-process.patch 2019-12-19 14:32:25.393283707 +0000 @@ -1,14 +1,15 @@ -From 61874d3c0663504f83d93a4701627a5949160a0f Mon Sep 17 00:00:00 2001 +From e77625cfc20fcd6d8556755167c7c918b11f8be2 Mon Sep 17 00:00:00 2001 From: Lu Qiuwen Date: Wed, 7 Aug 2019 16:24:22 +0800 Subject: [PATCH] net/fm10k: fix stats crash in multi-process +[ upstream commit 61874d3c0663504f83d93a4701627a5949160a0f ] + The ops pointers in fm10k_stats_get() are set up from primary process, when secondary process calls these ops pointers, a segment fault will happen. Fixes: 7223d200c227 ("fm10k: add base driver") -Cc: stable@dpdk.org Signed-off-by: Lu Qiuwen Acked-by: Xiao Wang @@ -22,10 +23,10 @@ 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/drivers/net/fm10k/base/fm10k_api.c b/drivers/net/fm10k/base/fm10k_api.c -index 7802a1c38b..dfb50a10d1 100644 +index c49d20dfbd..e7b2fe710a 100644 --- a/drivers/net/fm10k/base/fm10k_api.c +++ b/drivers/net/fm10k/base/fm10k_api.c -@@ -205,8 +205,14 @@ s32 fm10k_read_mac_addr(struct fm10k_hw *hw) +@@ -234,8 +234,14 @@ s32 fm10k_read_mac_addr(struct fm10k_hw *hw) * */ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { @@ -42,7 +43,7 @@ } /** -@@ -217,8 +223,14 @@ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) +@@ -246,8 +252,14 @@ void fm10k_update_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) * */ void fm10k_rebind_hw_stats(struct fm10k_hw *hw, struct fm10k_hw_stats *stats) { @@ -60,10 +61,10 @@ /** diff --git a/drivers/net/fm10k/base/fm10k_pf.c b/drivers/net/fm10k/base/fm10k_pf.c -index 3efe98cf4b..439dd224de 100644 +index db5f4912f1..f5b6a9e2e0 100644 --- a/drivers/net/fm10k/base/fm10k_pf.c +++ b/drivers/net/fm10k/base/fm10k_pf.c -@@ -1482,7 +1482,7 @@ const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = { +@@ -1511,7 +1511,7 @@ const struct fm10k_msg_data fm10k_iov_msg_data_pf[] = { * This function collects and aggregates global and per queue hardware * statistics. **/ @@ -72,7 +73,7 @@ struct fm10k_hw_stats *stats) { u32 timeout, ur, ca, um, xec, vlan_drop, loopback_drop, nodesc_drop; -@@ -1555,7 +1555,7 @@ STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw, +@@ -1584,7 +1584,7 @@ STATIC void fm10k_update_hw_stats_pf(struct fm10k_hw *hw, * This function resets the base for global and per queue hardware * statistics. **/ @@ -82,10 +83,10 @@ { DEBUGFUNC("fm10k_rebind_hw_stats_pf"); diff --git a/drivers/net/fm10k/base/fm10k_pf.h b/drivers/net/fm10k/base/fm10k_pf.h -index a3c6133b7a..1c2e9994dc 100644 +index ca125c2739..2c22bdd02f 100644 --- a/drivers/net/fm10k/base/fm10k_pf.h +++ b/drivers/net/fm10k/base/fm10k_pf.h -@@ -155,4 +155,10 @@ extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[]; +@@ -184,4 +184,10 @@ extern const struct fm10k_msg_data fm10k_iov_msg_data_pf[]; #endif s32 fm10k_init_ops_pf(struct fm10k_hw *hw); @@ -97,10 +98,10 @@ + struct fm10k_hw_stats *stats); #endif /* _FM10K_PF_H */ diff --git a/drivers/net/fm10k/base/fm10k_vf.c b/drivers/net/fm10k/base/fm10k_vf.c -index d4e095bc00..6809c3cfd7 100644 +index bd449773a1..2f4b5f5d22 100644 --- a/drivers/net/fm10k/base/fm10k_vf.c +++ b/drivers/net/fm10k/base/fm10k_vf.c -@@ -497,7 +497,7 @@ const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = { +@@ -526,7 +526,7 @@ const struct fm10k_tlv_attr fm10k_1588_msg_attr[] = { * * This function collects and aggregates per queue hardware statistics. **/ @@ -109,7 +110,7 @@ struct fm10k_hw_stats *stats) { DEBUGFUNC("fm10k_update_hw_stats_vf"); -@@ -512,7 +512,7 @@ STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw, +@@ -541,7 +541,7 @@ STATIC void fm10k_update_hw_stats_vf(struct fm10k_hw *hw, * * This function resets the base for queue hardware statistics. **/ @@ -119,10 +120,10 @@ { DEBUGFUNC("fm10k_rebind_hw_stats_vf"); diff --git a/drivers/net/fm10k/base/fm10k_vf.h b/drivers/net/fm10k/base/fm10k_vf.h -index 071fed2286..c90880df14 100644 +index 116c56fcce..d4edd330e8 100644 --- a/drivers/net/fm10k/base/fm10k_vf.h +++ b/drivers/net/fm10k/base/fm10k_vf.h -@@ -60,4 +60,9 @@ extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[]; +@@ -89,4 +89,9 @@ extern const struct fm10k_tlv_attr fm10k_1588_msg_attr[]; FM10K_MSG_HANDLER(FM10K_VF_MSG_ID_1588, fm10k_1588_msg_attr, func) s32 fm10k_init_ops_vf(struct fm10k_hw *hw);