This is an automated email from the ASF dual-hosted git repository. xiaoxiang781216 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit d51c9dc8459fe88fbec029a713fe5ed6b71cfe8b Author: wangzhi16 <[email protected]> AuthorDate: Thu Nov 20 15:26:51 2025 +0800 mm/kasan: add spinlock for kasan_report Disable scheduling and interrupts before kasan_repoft to prevent it from being switched out. Signed-off-by: wangzhi16 <[email protected]> --- mm/kasan/hook.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mm/kasan/hook.c b/mm/kasan/hook.c index 3af7037453f..a38a165c939 100644 --- a/mm/kasan/hook.c +++ b/mm/kasan/hook.c @@ -128,6 +128,8 @@ static uint32_t g_region_init; # endif #endif +static spinlock_t g_kasan_lock = SP_UNLOCKED; + /**************************************************************************** * Private Functions ****************************************************************************/ @@ -178,6 +180,7 @@ static void kasan_show_memory(FAR const uint8_t *addr, size_t size, static void kasan_report(FAR const void *addr, size_t size, bool is_write, FAR void *return_address) { + irqstate_t flags = spin_lock_irqsave_nopreempt(&g_kasan_lock); bool dump_only = (is_write && MM_KASAN_DISABLE_WRITE_PANIC) || (!is_write && MM_KASAN_DISABLE_READ_PANIC); @@ -203,6 +206,8 @@ static void kasan_report(FAR const void *addr, size_t size, { PANIC(); } + + spin_unlock_irqrestore_nopreempt(&g_kasan_lock, flags); } #if MM_KASAN_WATCHPOINT > 0
