1From cbeb07ef6238a719a2bb84837835ebc228ac4fde Mon Sep 17 00:00:00 2001 2From: jiangheng <jiangheng14@huawei.com> 3Date: Tue, 20 Jun 2023 14:56:28 +0800 4Subject: [PATCH] add error check in hugepage_init and sys_mbox_free 5 6--- 7 src/api/sys_arch.c | 8 ++++++-- 8 src/include/memp_def.h | 13 ++++++++++++- 9 2 files changed, 18 insertions(+), 3 deletions(-) 10 11diff --git a/src/api/sys_arch.c b/src/api/sys_arch.c 12index f93a00e..1bc3aee 100644 13--- a/src/api/sys_arch.c 14+++ b/src/api/sys_arch.c 15@@ -124,8 +124,12 @@ err_t sys_mbox_new(struct sys_mbox **mb, int size) 16 void sys_mbox_free(struct sys_mbox **mb) 17 { 18 struct sys_mbox *mbox = *mb; 19- rte_ring_free(mbox->ring); 20+ if (mbox->ring != NULL) { 21+ rte_ring_free(mbox->ring); 22+ mbox->ring = NULL; 23+ } 24 memp_free(MEMP_SYS_MBOX, mbox); 25+ sys_mbox_set_invalid(mb); 26 } 27 28 err_t sys_mbox_trypost(struct sys_mbox **mb, void *msg) 29@@ -371,7 +375,7 @@ uint8_t *sys_hugepage_malloc(const char *name, uint32_t size) 30 31 mz = rte_memzone_reserve(name, size, rte_socket_id(), 0); 32 if (mz == NULL) { 33- rte_exit(EXIT_FAILURE, "failed to reserver memory for mempool[%s]\n", name); 34+ LWIP_DEBUGF(SYS_DEBUG, ("sys_hugepage_malloc: failed to reserve memory for mempool\n")); 35 return NULL; 36 } 37 38diff --git a/src/include/memp_def.h b/src/include/memp_def.h 39index 082f685..3408c60 100644 40--- a/src/include/memp_def.h 41+++ b/src/include/memp_def.h 42@@ -52,15 +52,26 @@ 43 #include <lwip/priv/memp_std.h> 44 #undef LWIP_MEMPOOL 45 46-static inline void hugepage_init(void) 47+extern PER_THREAD uint8_t *ram_heap; 48+static inline int hugepage_init(void) 49 { 50 #define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEMPOOL_BASE_INIT(name) 51 #include "lwip/priv/memp_std.h" 52+ u16_t i; 53+ for (i = 0; i < LWIP_ARRAYSIZE(memp_pools); i++) { 54+ if (memp_pools[i]->base == NULL) { 55+ return -1; 56+ } 57+ } 58 59 #if !MEM_LIBC_MALLOC 60 LWIP_MEM_MEMORY_DECLARE(ram_heap) 61 LWIP_MEM_MEMORY_INIT(ram_heap) 62+ if (ram_heap == NULL) { 63+ return -1; 64+ } 65 #endif /* MEM_LIBC_MALLOC */ 66+ return 0; 67 } 68 69 #endif /* __MEMP_DEF_H__ */ 70-- 712.27.0 72 73