commit
6ff615b9ca
|
@ -339,7 +339,7 @@ VOID OsLmsLosMallocMark(const VOID *curNodeStart, const VOID *nextNodeStart, UIN
|
||||||
}
|
}
|
||||||
|
|
||||||
OsLmsSetShadowValue(node, curNodeStartAddr, curNodeStartAddr + nodeHeadSize, LMS_SHADOW_REDZONE_U8);
|
OsLmsSetShadowValue(node, curNodeStartAddr, curNodeStartAddr + nodeHeadSize, LMS_SHADOW_REDZONE_U8);
|
||||||
OsLmsSetShadowValue(node, curNodeStartAddr + nodeHeadSize, nextNodeStartAddr, LMS_SHADOW_ACCESSABLE_U8);
|
OsLmsSetShadowValue(node, curNodeStartAddr + nodeHeadSize, nextNodeStartAddr, LMS_SHADOW_ACCESSIBLE_U8);
|
||||||
OsLmsSetShadowValue(node, nextNodeStartAddr, nextNodeStartAddr + nodeHeadSize, LMS_SHADOW_REDZONE_U8);
|
OsLmsSetShadowValue(node, nextNodeStartAddr, nextNodeStartAddr + nodeHeadSize, LMS_SHADOW_REDZONE_U8);
|
||||||
LMS_UNLOCK(intSave);
|
LMS_UNLOCK(intSave);
|
||||||
}
|
}
|
||||||
|
@ -357,7 +357,7 @@ VOID OsLmsCheckValid(UINTPTR checkAddr, BOOL isFreeCheck)
|
||||||
|
|
||||||
OsLmsGetShadowValue(node, checkAddr, &shadowValue);
|
OsLmsGetShadowValue(node, checkAddr, &shadowValue);
|
||||||
LMS_UNLOCK(intSave);
|
LMS_UNLOCK(intSave);
|
||||||
if ((shadowValue == LMS_SHADOW_ACCESSABLE) || ((isFreeCheck) && (shadowValue == LMS_SHADOW_PAINT))) {
|
if ((shadowValue == LMS_SHADOW_ACCESSIBLE) || ((isFreeCheck) && (shadowValue == LMS_SHADOW_PAINT))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ VOID OsLmsLosFreeMark(const VOID *curNodeStart, const VOID *nextNodeStart, UINT3
|
||||||
UINTPTR nextNodeStartAddr = (UINTPTR)nextNodeStart;
|
UINTPTR nextNodeStartAddr = (UINTPTR)nextNodeStart;
|
||||||
|
|
||||||
OsLmsGetShadowValue(node, curNodeStartAddr + nodeHeadSize, &shadowValue);
|
OsLmsGetShadowValue(node, curNodeStartAddr + nodeHeadSize, &shadowValue);
|
||||||
if ((shadowValue != LMS_SHADOW_ACCESSABLE) && (shadowValue != LMS_SHADOW_PAINT)) {
|
if ((shadowValue != LMS_SHADOW_ACCESSIBLE) && (shadowValue != LMS_SHADOW_PAINT)) {
|
||||||
LMS_UNLOCK(intSave);
|
LMS_UNLOCK(intSave);
|
||||||
OsLmsReportError(curNodeStartAddr + nodeHeadSize, MEM_REGION_SIZE_1, FREE_ERRORMODE);
|
OsLmsReportError(curNodeStartAddr + nodeHeadSize, MEM_REGION_SIZE_1, FREE_ERRORMODE);
|
||||||
return;
|
return;
|
||||||
|
@ -421,7 +421,7 @@ VOID LOS_LmsAddrDisableProtect(UINTPTR addrStart, UINTPTR addrEnd)
|
||||||
LMS_LOCK(intSave);
|
LMS_LOCK(intSave);
|
||||||
LmsMemListNode *node = OsLmsGetPoolNodeFromAddr(addrStart);
|
LmsMemListNode *node = OsLmsGetPoolNodeFromAddr(addrStart);
|
||||||
if (node != NULL) {
|
if (node != NULL) {
|
||||||
OsLmsSetShadowValue(node, addrStart, addrEnd, LMS_SHADOW_ACCESSABLE_U8);
|
OsLmsSetShadowValue(node, addrStart, addrEnd, LMS_SHADOW_ACCESSIBLE_U8);
|
||||||
}
|
}
|
||||||
LMS_UNLOCK(intSave);
|
LMS_UNLOCK(intSave);
|
||||||
}
|
}
|
||||||
|
@ -440,7 +440,7 @@ STATIC UINT32 OsLmsCheckAddr(UINTPTR addr)
|
||||||
LmsMemListNode *node = OsLmsGetPoolNodeFromAddr(addr);
|
LmsMemListNode *node = OsLmsGetPoolNodeFromAddr(addr);
|
||||||
if (node == NULL) {
|
if (node == NULL) {
|
||||||
LMS_UNLOCK(intSave);
|
LMS_UNLOCK(intSave);
|
||||||
return LMS_SHADOW_ACCESSABLE_U8;
|
return LMS_SHADOW_ACCESSIBLE_U8;
|
||||||
}
|
}
|
||||||
|
|
||||||
OsLmsGetShadowValue(node, addr, &shadowValue);
|
OsLmsGetShadowValue(node, addr, &shadowValue);
|
||||||
|
@ -556,7 +556,7 @@ STATIC VOID OsLmsGetErrorInfo(UINTPTR addr, UINT32 size, LmsAddrInfo *info)
|
||||||
{
|
{
|
||||||
LmsMemListNode *node = OsLmsGetPoolNodeFromAddr(addr);
|
LmsMemListNode *node = OsLmsGetPoolNodeFromAddr(addr);
|
||||||
OsLmsGetShadowInfo(node, addr, info);
|
OsLmsGetShadowInfo(node, addr, info);
|
||||||
if (info->shadowValue != LMS_SHADOW_ACCESSABLE_U8) {
|
if (info->shadowValue != LMS_SHADOW_ACCESSIBLE_U8) {
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
OsLmsGetShadowInfo(node, addr + size - 1, info);
|
OsLmsGetShadowInfo(node, addr + size - 1, info);
|
||||||
|
@ -572,7 +572,7 @@ STATIC VOID OsLmsPrintErrInfo(LmsAddrInfo *info, UINT32 errMod)
|
||||||
case LMS_SHADOW_REDZONE:
|
case LMS_SHADOW_REDZONE:
|
||||||
PRINT_ERR("Heap buffer overflow error detected\n");
|
PRINT_ERR("Heap buffer overflow error detected\n");
|
||||||
break;
|
break;
|
||||||
case LMS_SHADOW_ACCESSABLE:
|
case LMS_SHADOW_ACCESSIBLE:
|
||||||
PRINT_ERR("No error\n");
|
PRINT_ERR("No error\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -628,7 +628,7 @@ VOID OsLmsReportError(UINTPTR p, UINT32 size, UINT32 errMod)
|
||||||
#if (LOSCFG_LMS_STORE_CHECK == 1)
|
#if (LOSCFG_LMS_STORE_CHECK == 1)
|
||||||
VOID __asan_store1_noabort(UINTPTR p)
|
VOID __asan_store1_noabort(UINTPTR p)
|
||||||
{
|
{
|
||||||
if (OsLmsCheckAddr(p) != LMS_SHADOW_ACCESSABLE_U8) {
|
if (OsLmsCheckAddr(p) != LMS_SHADOW_ACCESSIBLE_U8) {
|
||||||
OsLmsReportError(p, MEM_REGION_SIZE_1, STORE_ERRMODE);
|
OsLmsReportError(p, MEM_REGION_SIZE_1, STORE_ERRMODE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -704,7 +704,7 @@ VOID __asan_storeN_noabort(UINTPTR p, UINT32 size)
|
||||||
#if (LOSCFG_LMS_LOAD_CHECK == 1)
|
#if (LOSCFG_LMS_LOAD_CHECK == 1)
|
||||||
VOID __asan_load1_noabort(UINTPTR p)
|
VOID __asan_load1_noabort(UINTPTR p)
|
||||||
{
|
{
|
||||||
if (OsLmsCheckAddr(p) != LMS_SHADOW_ACCESSABLE_U8) {
|
if (OsLmsCheckAddr(p) != LMS_SHADOW_ACCESSIBLE_U8) {
|
||||||
OsLmsReportError(p, MEM_REGION_SIZE_1, LOAD_ERRMODE);
|
OsLmsReportError(p, MEM_REGION_SIZE_1, LOAD_ERRMODE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,13 +59,13 @@ extern "C" {
|
||||||
#define LMS_POOL_RESIZE(size) ((size) / (LMS_SHADOW_U8_REFER_BYTES + 1) * LMS_SHADOW_U8_REFER_BYTES)
|
#define LMS_POOL_RESIZE(size) ((size) / (LMS_SHADOW_U8_REFER_BYTES + 1) * LMS_SHADOW_U8_REFER_BYTES)
|
||||||
#define LMS_ADDR_ALIGN(p) (((UINTPTR)(p) + sizeof(UINTPTR) - 1) & ~((UINTPTR)(sizeof(UINTPTR) - 1)))
|
#define LMS_ADDR_ALIGN(p) (((UINTPTR)(p) + sizeof(UINTPTR) - 1) & ~((UINTPTR)(sizeof(UINTPTR) - 1)))
|
||||||
|
|
||||||
#define LMS_SHADOW_ACCESSABLE 0x00
|
#define LMS_SHADOW_ACCESSIBLE 0x00
|
||||||
#define LMS_SHADOW_AFTERFREE 0x03
|
#define LMS_SHADOW_AFTERFREE 0x03
|
||||||
#define LMS_SHADOW_REDZONE 0x02
|
#define LMS_SHADOW_REDZONE 0x02
|
||||||
#define LMS_SHADOW_PAINT 0x01
|
#define LMS_SHADOW_PAINT 0x01
|
||||||
#define LMS_SHADOW_MASK 0x03
|
#define LMS_SHADOW_MASK 0x03
|
||||||
|
|
||||||
#define LMS_SHADOW_ACCESSABLE_U8 0x00
|
#define LMS_SHADOW_ACCESSIBLE_U8 0x00
|
||||||
#define LMS_SHADOW_AFTERFREE_U8 0xFF
|
#define LMS_SHADOW_AFTERFREE_U8 0xFF
|
||||||
#define LMS_SHADOW_REDZONE_U8 0xAA
|
#define LMS_SHADOW_REDZONE_U8 0xAA
|
||||||
#define LMS_SHADOW_MASK_U8 0xFF
|
#define LMS_SHADOW_MASK_U8 0xFF
|
||||||
|
|
|
@ -263,7 +263,7 @@ SYSCALL_HAND_DEF(__NR_get_thread_area, SysGetThreadArea, char *, ARG_NUM_0)
|
||||||
// SYSCALL_HAND_DEF(__NR_pthread_set_detach, SysUserThreadSetDetach, int, ARG_NUM_1)
|
// SYSCALL_HAND_DEF(__NR_pthread_set_detach, SysUserThreadSetDetach, int, ARG_NUM_1)
|
||||||
// SYSCALL_HAND_DEF(__NR_pthread_join, SysThreadJoin, int, ARG_NUM_1)
|
// SYSCALL_HAND_DEF(__NR_pthread_join, SysThreadJoin, int, ARG_NUM_1)
|
||||||
// SYSCALL_HAND_DEF(__NR_pthread_deatch, SysUserThreadDetach, int, ARG_NUM_1)
|
// SYSCALL_HAND_DEF(__NR_pthread_deatch, SysUserThreadDetach, int, ARG_NUM_1)
|
||||||
SYSCALL_HAND_DEF(__NR_creat_user_thread, SysUserTaskCreate, unsigned int, ARG_NUM_4)
|
SYSCALL_HAND_DEF(__NR_create_user_thread, SysUserTaskCreate, unsigned int, ARG_NUM_4)
|
||||||
// SYSCALL_HAND_DEF(__NR_getrusage, SysGetrusage, int, ARG_NUM_2)
|
// SYSCALL_HAND_DEF(__NR_getrusage, SysGetrusage, int, ARG_NUM_2)
|
||||||
// SYSCALL_HAND_DEF(__NR_sysconf, SysSysconf, long, ARG_NUM_1)
|
// SYSCALL_HAND_DEF(__NR_sysconf, SysSysconf, long, ARG_NUM_1)
|
||||||
// SYSCALL_HAND_DEF(__NR_ugetrlimit, SysUgetrlimit, int, ARG_NUM_2)
|
// SYSCALL_HAND_DEF(__NR_ugetrlimit, SysUgetrlimit, int, ARG_NUM_2)
|
||||||
|
|
|
@ -598,7 +598,7 @@ STATIC INLINE VOID OsLmsReallocMergeNodeMark(struct OsMemNodeHead *node)
|
||||||
}
|
}
|
||||||
|
|
||||||
g_lms->simpleMark((UINTPTR)node + OS_MEM_NODE_HEAD_SIZE, (UINTPTR)OS_MEM_NEXT_NODE(node),
|
g_lms->simpleMark((UINTPTR)node + OS_MEM_NODE_HEAD_SIZE, (UINTPTR)OS_MEM_NEXT_NODE(node),
|
||||||
LMS_SHADOW_ACCESSABLE_U8);
|
LMS_SHADOW_ACCESSIBLE_U8);
|
||||||
}
|
}
|
||||||
|
|
||||||
STATIC INLINE VOID OsLmsReallocSplitNodeMark(struct OsMemNodeHead *node)
|
STATIC INLINE VOID OsLmsReallocSplitNodeMark(struct OsMemNodeHead *node)
|
||||||
|
|
Loading…
Reference in New Issue