diff --git a/0069-add-error-check-in-hugepage_init-and-sys_mbox_free.patch b/0069-add-error-check-in-hugepage_init-and-sys_mbox_free.patch new file mode 100644 index 0000000000000000000000000000000000000000..b8547cc9466949106a87fb221c11dba633d7acb0 --- /dev/null +++ b/0069-add-error-check-in-hugepage_init-and-sys_mbox_free.patch @@ -0,0 +1,72 @@ +From cbeb07ef6238a719a2bb84837835ebc228ac4fde Mon Sep 17 00:00:00 2001 +From: jiangheng +Date: Tue, 20 Jun 2023 14:56:28 +0800 +Subject: [PATCH] add error check in hugepage_init and sys_mbox_free + +--- + src/api/sys_arch.c | 8 ++++++-- + src/include/memp_def.h | 13 ++++++++++++- + 2 files changed, 18 insertions(+), 3 deletions(-) + +diff --git a/src/api/sys_arch.c b/src/api/sys_arch.c +index f93a00e..1bc3aee 100644 +--- a/src/api/sys_arch.c ++++ b/src/api/sys_arch.c +@@ -124,8 +124,12 @@ err_t sys_mbox_new(struct sys_mbox **mb, int size) + void sys_mbox_free(struct sys_mbox **mb) + { + struct sys_mbox *mbox = *mb; +- rte_ring_free(mbox->ring); ++ if (mbox->ring != NULL) { ++ rte_ring_free(mbox->ring); ++ mbox->ring = NULL; ++ } + memp_free(MEMP_SYS_MBOX, mbox); ++ sys_mbox_set_invalid(mb); + } + + err_t sys_mbox_trypost(struct sys_mbox **mb, void *msg) +@@ -371,7 +375,7 @@ uint8_t *sys_hugepage_malloc(const char *name, uint32_t size) + + mz = rte_memzone_reserve(name, size, rte_socket_id(), 0); + if (mz == NULL) { +- rte_exit(EXIT_FAILURE, "failed to reserver memory for mempool[%s]\n", name); ++ LWIP_DEBUGF(SYS_DEBUG, ("sys_hugepage_malloc: failed to reserve memory for mempool\n")); + return NULL; + } + +diff --git a/src/include/memp_def.h b/src/include/memp_def.h +index 082f685..3408c60 100644 +--- a/src/include/memp_def.h ++++ b/src/include/memp_def.h +@@ -52,15 +52,26 @@ + #include + #undef LWIP_MEMPOOL + +-static inline void hugepage_init(void) ++extern PER_THREAD uint8_t *ram_heap; ++static inline int hugepage_init(void) + { + #define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEMPOOL_BASE_INIT(name) + #include "lwip/priv/memp_std.h" ++ u16_t i; ++ if (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { ++ if (memp_pools[i]->base == NULL) { ++ return -1; ++ } ++ } + + #if !MEM_LIBC_MALLOC + LWIP_MEM_MEMORY_DECLARE(ram_heap) + LWIP_MEM_MEMORY_INIT(ram_heap) ++ if (ram_heap == NULL) { ++ return -1; ++ } + #endif /* MEM_LIBC_MALLOC */ ++ return 0; + } + + #endif /* __MEMP_DEF_H__ */ +-- +2.27.0 + diff --git a/lwip.spec b/lwip.spec index 66cb6a09809bc0e4f178e5e20ca92cc2de50ca9c..b9329c35ce7ca79f0dc2db57a90e7fa8dd13fe97 100644 --- a/lwip.spec +++ b/lwip.spec @@ -4,7 +4,7 @@ Summary: lwip is a small independent implementation of the TCP/IP protocol suite Name: lwip Version: 2.1.3 -Release: 73 +Release: 74 License: BSD URL: http://savannah.nongnu.org/projects/lwip/ Source0: http://download.savannah.nongnu.org/releases/lwip/%{name}-%{version}.zip @@ -80,6 +80,7 @@ Patch9064: 0065-fix-udp-recvmbox-size-not-set.patch Patch9065: 0066-adapt-to-dpdk-19.11-and-dpdk-21.11.patch Patch9066: 0067-fix-null-pointer-when-all-zero-address-listen.patch Patch9067: 0068-enable-UDP-CKSUM-in-lwip.patch +Patch9068: 0069-add-error-check-in-hugepage_init-and-sys_mbox_free.patch BuildRequires: gcc-c++ dos2unix dpdk-devel @@ -110,6 +111,9 @@ cd %{_builddir}/%{name}-%{version}/src %{_libdir}/liblwip.a %changelog +* Sun Jun 25 2023 jiangheng - 2.1.3-74 +- add error check in hugepage_init and sys_mbox_free + * Wed Jun 21 2023 kircher - 2.1.3-73 - enable udp cksum in lwip