mm/mm_heap: remove kasan in MM_ADD_BACKTRACE
do simple copy to instead of memset and memcpy operation because they have been instrumented, if you access the posion area, the system will crash. Signed-off-by: dongjiuzhu1 <dongjiuzhu1@xiaomi.com>
This commit is contained in:
parent
415a09115d
commit
7cd325f3be
@ -33,10 +33,12 @@
|
|||||||
* Public Functions
|
* Public Functions
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
nosanitize_address
|
||||||
int up_backtrace(struct tcb_s *tcb, void **buffer, int size, int skip)
|
int up_backtrace(struct tcb_s *tcb, void **buffer, int size, int skip)
|
||||||
{
|
{
|
||||||
void *buf[skip + size];
|
void *buf[skip + size];
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
if (tcb == running_task())
|
if (tcb == running_task())
|
||||||
{
|
{
|
||||||
@ -49,7 +51,10 @@ int up_backtrace(struct tcb_s *tcb, void **buffer, int size, int skip)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret -= skip;
|
ret -= skip;
|
||||||
memcpy(buffer, &buf[skip], ret * sizeof(void *));
|
for (i = 0; i < ret; i++)
|
||||||
|
{
|
||||||
|
buffer[i] = buf[skip + i];
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -82,23 +82,21 @@
|
|||||||
do \
|
do \
|
||||||
{ \
|
{ \
|
||||||
FAR struct mm_allocnode_s *tmp = (FAR struct mm_allocnode_s *)(ptr); \
|
FAR struct mm_allocnode_s *tmp = (FAR struct mm_allocnode_s *)(ptr); \
|
||||||
kasan_unpoison(tmp, SIZEOF_MM_ALLOCNODE); \
|
|
||||||
FAR struct tcb_s *tcb; \
|
FAR struct tcb_s *tcb; \
|
||||||
tmp->pid = gettid(); \
|
tmp->pid = gettid(); \
|
||||||
tcb = nxsched_get_tcb(tmp->pid); \
|
tcb = nxsched_get_tcb(tmp->pid); \
|
||||||
if ((heap)->mm_procfs.backtrace || (tcb && tcb->flags & TCB_FLAG_HEAP_DUMP)) \
|
if ((heap)->mm_procfs.backtrace || (tcb && tcb->flags & TCB_FLAG_HEAP_DUMP)) \
|
||||||
{ \
|
{ \
|
||||||
int n = backtrace(tmp->backtrace, CONFIG_MM_BACKTRACE); \
|
int n = backtrace(tmp->backtrace, CONFIG_MM_BACKTRACE); \
|
||||||
if (n < CONFIG_MM_BACKTRACE) \
|
while (n < CONFIG_MM_BACKTRACE) \
|
||||||
{ \
|
{ \
|
||||||
tmp->backtrace[n] = 0; \
|
tmp->backtrace[n++] = NULL; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
tmp->backtrace[0] = 0; \
|
tmp->backtrace[0] = 0; \
|
||||||
} \
|
} \
|
||||||
kasan_poison(tmp, SIZEOF_MM_ALLOCNODE); \
|
|
||||||
} \
|
} \
|
||||||
while (0)
|
while (0)
|
||||||
#else
|
#else
|
||||||
|
Loading…
Reference in New Issue
Block a user