From 98d601b7c56a8f520a87325062975b25f65e230f Mon Sep 17 00:00:00 2001 From: jiangheng Date: Wed, 21 Jun 2023 01:06:32 +0800 Subject: [PATCH] sync check return value of hugepage_init to avoid coredump when hugepage memory is insufficient (cherry picked from commit d694bb55f758b825f70fd5e03101c85502e18b4d) --- ...-fix-core-dump-when-slave-mac-failed.patch | 93 +++++++++++++++++++ ...ue-of-hugepage_init-to-avoid-coredum.patch | 29 ++++++ gazelle.spec | 8 +- 3 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 0258-fix-core-dump-when-slave-mac-failed.patch create mode 100644 0259-check-return-value-of-hugepage_init-to-avoid-coredum.patch diff --git a/0258-fix-core-dump-when-slave-mac-failed.patch b/0258-fix-core-dump-when-slave-mac-failed.patch new file mode 100644 index 0000000..c0ad1a0 --- /dev/null +++ b/0258-fix-core-dump-when-slave-mac-failed.patch @@ -0,0 +1,93 @@ +From 8f81630296d5d305613a1a766a7a2fbc4690df79 Mon Sep 17 00:00:00 2001 +From: compile_success <980965867@qq.com> +Date: Mon, 26 Jun 2023 08:45:51 +0000 +Subject: [PATCH] fix core dump when slave mac failed + +--- + src/lstack/core/lstack_dpdk.c | 37 +++++++++++++++++++++++++++++++++-- + 1 file changed, 35 insertions(+), 2 deletions(-) + +diff --git a/src/lstack/core/lstack_dpdk.c b/src/lstack/core/lstack_dpdk.c +index f865d55..f6cabf8 100644 +--- a/src/lstack/core/lstack_dpdk.c ++++ b/src/lstack/core/lstack_dpdk.c +@@ -495,13 +495,32 @@ int32_t dpdk_ethdev_init(int port_id, bool bond_port) + for (int i = 0; i < slave_num; i++) { + ret = dpdk_ethdev_init(slave_port_id[i], 0); + if (ret != 0) { +- LSTACK_LOG(ERR, LSTACK, "dpdk_ethdev_init failed\n"); ++ LSTACK_LOG(ERR, LSTACK, "dpdk_ethdev_init failed ret = %d\n", ret); + return -1; + } + ret = rte_eth_promiscuous_enable(slave_port_id[i]); +- rte_eth_allmulticast_enable(slave_port_id[i]); ++ if (ret != 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk slave enable promiscuous failed ret = %d\n", ret); ++ return -1; ++ } ++ ++ ret = rte_eth_allmulticast_enable(slave_port_id[i]); ++ if (ret != 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk slave enable allmulticast failed ret = %d\n", ret); ++ return -1; ++ } ++ + ret = rte_eth_bond_slave_add(port_id, slave_port_id[i]); ++ if (ret != 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk add slave port failed ret = %d\n", ret); ++ return -1; ++ } ++ + ret = rte_eth_dev_start(slave_port_id[i]); ++ if (ret != 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk start slave port failed ret = %d\n", ret); ++ return -1; ++ } + } + } + +@@ -670,27 +689,41 @@ int32_t init_dpdk_ethdev(void) + } + + ret = dpdk_ethdev_init(bond_port_id, 1); ++ if (ret != 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk_ethdev_init failed ret = %d\n", ret); ++ return -1; ++ } ++ + ret = rte_eth_bond_xmit_policy_set(bond_port_id, BALANCE_XMIT_POLICY_LAYER34); + if (ret < 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk set bond xmit policy failed ret = %d\n", ret); + return -1; + } + + ret = rte_eth_bond_8023ad_dedicated_queues_enable(bond_port_id); + if (ret < 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk enable 8023 dedicated queues failed ret = %d\n", ret); + return -1; + } + + ret = rte_eth_promiscuous_enable(bond_port_id); + if (ret < 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk enable promiscuous failed ret = %d\n", ret); + return -1; + } + + ret = rte_eth_allmulticast_enable(bond_port_id); + if (ret < 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk enable allmulticast failed ret = %d\n", ret); + return -1; + } + + ret = rte_eth_dev_start(bond_port_id); ++ if (ret < 0) { ++ LSTACK_LOG(ERR, LSTACK, "dpdk start bond port failed ret = %d\n", ret); ++ return -1; ++ } ++ + /* 20: sleep for lacp ,this is a temp plan, it will be changed in future */ + int wait_lacp = 20; + sleep(wait_lacp); +-- +2.27.0 + diff --git a/0259-check-return-value-of-hugepage_init-to-avoid-coredum.patch b/0259-check-return-value-of-hugepage_init-to-avoid-coredum.patch new file mode 100644 index 0000000..317744c --- /dev/null +++ b/0259-check-return-value-of-hugepage_init-to-avoid-coredum.patch @@ -0,0 +1,29 @@ +From 0d33ac8454b10338d084a57e959cccfe3d99c8e8 Mon Sep 17 00:00:00 2001 +From: jiangheng +Date: Tue, 20 Jun 2023 15:17:21 +0800 +Subject: [PATCH] check return value of hugepage_init to avoid coredump when + hugepage memory is insufficient + +--- + src/lstack/core/lstack_protocol_stack.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c +index e13f039..3a6e792 100644 +--- a/src/lstack/core/lstack_protocol_stack.c ++++ b/src/lstack/core/lstack_protocol_stack.c +@@ -379,7 +379,10 @@ static struct protocol_stack *stack_thread_init(void *arg) + } + RTE_PER_LCORE(_lcore_id) = stack->cpu_id; + +- hugepage_init(); ++ if (hugepage_init() != 0) { ++ LSTACK_LOG(ERR, LSTACK, "hugepage init failed\n"); ++ goto END1; ++ } + + tcpip_init(NULL, NULL); + +-- +2.27.0 + diff --git a/gazelle.spec b/gazelle.spec index 7acce4e..e8dcfe2 100644 --- a/gazelle.spec +++ b/gazelle.spec @@ -2,7 +2,7 @@ Name: gazelle Version: 1.0.1 -Release: 67 +Release: 68 Summary: gazelle is a high performance user-mode stack License: MulanPSL-2.0 URL: https://gitee.com/openeuler/gazelle @@ -272,6 +272,8 @@ Patch9254: 0254-fix-null-pointer-of-sock-in-udp_recvfrom.patch Patch9255: 0255-skip-gro-when-tcp-ip-checksum-offloads-disable.patch Patch9256: 0256-lstack-cfg-add-app_exclude_cpus.patch Patch9257: 0257-enable-UDP-CKSUM-in-gazelle.patch +Patch9258: 0258-fix-core-dump-when-slave-mac-failed.patch +Patch9259: 0259-check-return-value-of-hugepage_init-to-avoid-coredum.patch %description %{name} is a high performance user-mode stack. @@ -313,6 +315,10 @@ install -Dpm 0640 %{_builddir}/%{name}-%{version}/src/ltran/ltran.conf %{b %config(noreplace) %{conf_path}/ltran.conf %changelog +* Wed Jun 21 2023 jiangheng12 - 1.0.1-68 +- check return value of hugepage_init to avoid coredump when hugepage memory is insufficient +- fix core dump when slave mac failed + * Sun Jun 25 2023 kircher - 1.0.1-67 - enable UDP CKSUM in gazelle - lstack: cfg add app_exclude_cpus