From 9af0cd4891a3397bec496c8b4eb30dd4007345fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=B0=B8=E7=94=9F?= Date: Tue, 30 Mar 2021 19:43:21 +0800 Subject: [PATCH] modify:heapInit:check the heap addr and size for configured alignsize, if not, return err --- kernel/src/mm/los_memory.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/kernel/src/mm/los_memory.c b/kernel/src/mm/los_memory.c index 69ae3e2a..4cf53eb3 100755 --- a/kernel/src/mm/los_memory.c +++ b/kernel/src/mm/los_memory.c @@ -894,7 +894,13 @@ UINT32 LOS_MemInit(VOID *pool, UINT32 size) return OS_ERROR; } - size = OS_MEM_ALIGN(size, OS_MEM_ALIGN_SIZE); + if (((UINTPTR)pool & (OS_MEM_ALIGN_SIZE - 1)) || \ + (size & (OS_MEM_ALIGN_SIZE - 1))) { + PRINT_ERR("LiteOS heap memory address or size configured not aligned:address:0x%x,size:0x%x, alignsize:%d\n", \ + (UINTPTR)pool, size, OS_MEM_ALIGN_SIZE); + return OS_ERROR; + } + if (OsMemPoolInit(pool, size)) { return OS_ERROR; } @@ -2014,11 +2020,6 @@ UINT32 OsMemSystemInit(VOID) m_aucSysMem0 = LOSCFG_SYS_HEAP_ADDR; #endif - if ((UINTPTR)m_aucSysMem0 & (OS_MEM_ALIGN_SIZE - 1)) { - m_aucSysMem0 = (UINT8 *)(((UINTPTR)m_aucSysMem0 + (OS_MEM_ALIGN_SIZE - 1)) & - ~(OS_MEM_ALIGN_SIZE - 1)); - } - ret = LOS_MemInit(m_aucSysMem0, LOSCFG_SYS_HEAP_SIZE); PRINT_INFO("LiteOS heap memory address:0x%x,size:0x%x\n", m_aucSysMem0, LOSCFG_SYS_HEAP_SIZE); return ret;