From patchwork Wed Mar 20 13:54:34 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Zhaohui (zhaohui, Polestar)" X-Patchwork-Id: 51474 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B86481B476; Thu, 21 Mar 2019 10:29:36 +0100 (CET) Received: from huawei.com (szxga01-in.huawei.com [45.249.212.187]) by dpdk.org (Postfix) with ESMTP id DC4D0695D; Wed, 20 Mar 2019 14:54:43 +0100 (CET) Received: from DGGEML404-HUB.china.huawei.com (unknown [172.30.72.53]) by Forcepoint Email with ESMTP id C4D8AB6C90D97D38EF74; Wed, 20 Mar 2019 21:54:40 +0800 (CST) Received: from DGGEML529-MBX.china.huawei.com ([169.254.6.70]) by DGGEML404-HUB.china.huawei.com ([fe80::b177:a243:7a69:5ab8%31]) with mapi id 14.03.0415.000; Wed, 20 Mar 2019 21:54:34 +0800 From: "Zhaohui (zhaohui, Polestar)" To: David Marchand CC: "dev@dpdk.org" , Chas Williams <3chas3@gmail.com>, "Ferruh Yigit" , chenchanghu , "stable@dpdk.org" , wangyunjian Thread-Topic: =?utf-8?q?=5Bdpdk-dev=5D_=5BPATCH=5D_net/bonding=3A_fix_Seg?= =?utf-8?q?fault_when_eal_thread_executing_nic=E2=80=98s_lsc_event_?= =?utf-8?q?for_mode_4?= Thread-Index: AdTfF7pcdYdJTtR7SJmdzxb2JwZX9f//jxoA//94GpA= Date: Wed, 20 Mar 2019 13:54:34 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.62.33.217] MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mailman-Approved-At: Thu, 21 Mar 2019 10:29:35 +0100 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] =?utf-8?b?562U5aSNOiAgW1BBVENIXSBuZXQvYm9uZGluZzogZml4?= =?utf-8?q?_Segfault_when_eal_thread_executing_nic=E2=80=98s_lsc_ev?= =?utf-8?q?ent_for_mode_4?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Well done, Can you fix it? thanks by zhaohui 发件人: David Marchand [mailto:david.marchand@redhat.com] 发送时间: 2019年3月20日 21:39 收件人: Zhaohui (zhaohui, Polestar) 抄送: dev@dpdk.org; Chas Williams <3chas3@gmail.com>; Ferruh Yigit ; chenchanghu ; stable@dpdk.org; wangyunjian 主题: Re: [dpdk-dev] [PATCH] net/bonding: fix Segfault when eal thread executing nic‘s lsc event for mode 4 On Wed, Mar 20, 2019 at 2:26 PM Zhaohui (zhaohui, Polestar) > wrote: Hi: When the number of slave slave devices exceeds 8, it will cause the array subscript to cross the boundary. According to the suggestions, Modified array subscript to RTE_MAX_ETHPORTS, and Changed uint8_t to uint16_t. Something like this: From 51a081ea88cca1599d458d8d1c7d9605a6eb3352 Mon Sep 17 00:00:00 2001 From: zhaohui8 > Date: Wed, 20 Mar 2019 20:17:27 +0800 Subject: [PATCH] net/bonding: fix Segfault when eal thread executing nic‘s lsc event for mode 4 Change-Id: I6d800a3adf5ca51f295b607de879bcb0ccc20004 --- drivers/net/bonding/rte_eth_bond_8023ad.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) * @param port_pos Port to assign. */ static void -selection_logic(struct bond_dev_private *internals, uint8_t slave_id) +selection_logic(struct bond_dev_private *internals, uint16_t slave_id) { struct port *agg, *port; uint16_t slaves_count, new_agg_id, i, j = 0; uint16_t *slaves; - uint64_t agg_bandwidth[8] = {0}; - uint64_t agg_count[8] = {0}; + uint64_t agg_bandwidth[RTE_MAX_ETHPORTS] = {0}; + uint64_t agg_count[RTE_MAX_ETHPORTS] = {0}; uint16_t default_slave = 0; - uint8_t mode_count_id, mode_band_id; + uint16_t mode_count_id, mode_band_id; struct rte_eth_link link_info; slaves = internals->active_slaves; @@ -806,7 +806,7 @@ struct ether_addr slave_addr; struct rte_mbuf *lacp_pkt = NULL; - uint8_t i, slave_id; + uint16_t i, slave_id; /* Update link status on each port */ -- 1.9.5.msysgit.0 Oh, I had missed this [8] array, good catch. For the slave id on 16bits, I sent this earlier: http://patchwork.dpdk.org/patch/51387/ And I have other fixes for 802.3ad that I will send once properly tested. -- David Marchand diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c index dd847c6..4d99239 100644 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c @@ -638,7 +638,7 @@ SM_FLAG_CLR(port, NTT); } -static uint8_t +static uint16_t max_index(uint64_t *a, int n) { if (n <= 0) @@ -664,15 +664,15 @@