• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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