kasan:fix bug for kasan_mem_to_shadow
Signed-off-by: anjiahao <anjiahao@xiaomi.com>
This commit is contained in:
parent
780abec239
commit
745611f800
@ -149,7 +149,7 @@ static FAR uintptr_t *kasan_mem_to_shadow(FAR const void *ptr, size_t size,
|
|||||||
size_t mod;
|
size_t mod;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (g_region_init != KASAN_INIT_VALUE)
|
if (g_region_init != KASAN_INIT_VALUE || size == 0)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -161,7 +161,7 @@ static FAR uintptr_t *kasan_mem_to_shadow(FAR const void *ptr, size_t size,
|
|||||||
{
|
{
|
||||||
ret = kasan_find_mem(addr + i * KASAN_SHADOW_SCALE,
|
ret = kasan_find_mem(addr + i * KASAN_SHADOW_SCALE,
|
||||||
KASAN_SHADOW_SCALE, bit);
|
KASAN_SHADOW_SCALE, bit);
|
||||||
if (ret)
|
if (ret == NULL)
|
||||||
{
|
{
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -251,7 +251,7 @@ static bool kasan_is_poisoned(FAR const void *addr, size_t size)
|
|||||||
FAR uintptr_t *p;
|
FAR uintptr_t *p;
|
||||||
unsigned int bit;
|
unsigned int bit;
|
||||||
|
|
||||||
p = kasan_mem_to_shadow(addr + size - 1, 1, &bit);
|
p = kasan_mem_to_shadow(addr, size, &bit);
|
||||||
return p && ((*p >> bit) & 1);
|
return p && ((*p >> bit) & 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ static void kasan_set_poison(FAR const void *addr, size_t size,
|
|||||||
|
|
||||||
flags = spin_lock_irqsave(&g_lock);
|
flags = spin_lock_irqsave(&g_lock);
|
||||||
|
|
||||||
p = kasan_mem_to_shadow(addr, size, &bit);
|
p = kasan_find_mem((uintptr_t)addr, size, &bit);
|
||||||
DEBUGASSERT(p != NULL);
|
DEBUGASSERT(p != NULL);
|
||||||
|
|
||||||
nbit = KASAN_BITS_PER_WORD - bit % KASAN_BITS_PER_WORD;
|
nbit = KASAN_BITS_PER_WORD - bit % KASAN_BITS_PER_WORD;
|
||||||
|
Loading…
Reference in New Issue
Block a user