This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new 052ea5b20d mm/kasan: extern kasan API only MM_KASAN is enabled
052ea5b20d is described below
commit 052ea5b20dd227a1f9511a93a313a7241fd8b48b
Author: chao an <[email protected]>
AuthorDate: Fri Oct 25 13:45:28 2024 +0800
mm/kasan: extern kasan API only MM_KASAN is enabled
this PR will fix g_region_init is incorrectly linked to the image if
MM_KASAN is not enabled.
Signed-off-by: chao an <[email protected]>
---
include/nuttx/mm/kasan.h | 12 ++++++++----
mm/kasan/hook.c | 16 +++++++++++-----
2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/include/nuttx/mm/kasan.h b/include/nuttx/mm/kasan.h
index 18755e0551..a349eb9675 100644
--- a/include/nuttx/mm/kasan.h
+++ b/include/nuttx/mm/kasan.h
@@ -36,16 +36,20 @@
* Pre-processor Definitions
****************************************************************************/
-#define kasan_init_early() kasan_stop()
-
#ifndef CONFIG_MM_KASAN
# define kasan_poison(addr, size)
# define kasan_unpoison(addr, size) addr
# define kasan_register(addr, size)
# define kasan_unregister(addr)
# define kasan_reset_tag(addr) addr
+# define kasan_start()
+# define kasan_stop()
+# define kasan_debugpoint(t,a,s) 0
+# define kasan_init_early()
#else
+# define kasan_init_early() kasan_stop()
+
/****************************************************************************
* Public Function Prototypes
****************************************************************************/
@@ -141,8 +145,6 @@ void kasan_unregister(FAR void *addr);
FAR void *kasan_reset_tag(FAR const void *addr);
-#endif /* CONFIG_MM_KASAN */
-
/****************************************************************************
* Name: kasan_start
*
@@ -204,4 +206,6 @@ int kasan_debugpoint(int type, FAR void *addr, size_t size);
}
#endif
+#endif /* CONFIG_MM_KASAN */
+
#endif /* __INCLUDE_NUTTX_MM_KASAN_H */
diff --git a/mm/kasan/hook.c b/mm/kasan/hook.c
index 9289473590..d4dc19c212 100644
--- a/mm/kasan/hook.c
+++ b/mm/kasan/hook.c
@@ -115,7 +115,9 @@ struct kasan_watchpoint_s
static struct kasan_watchpoint_s g_watchpoint[MM_KASAN_WATCHPOINT];
#endif
+#ifdef CONFIG_MM_KASAN
static uint32_t g_region_init;
+#endif
/****************************************************************************
* Private Functions
@@ -225,27 +227,29 @@ static inline void kasan_check_report(FAR const void
*addr, size_t size,
bool is_write,
FAR void *return_address)
{
+#ifdef CONFIG_MM_KASAN
if (predict_false(size == 0 || g_region_init != KASAN_INIT_VALUE))
{
return;
}
-#ifndef CONFIG_MM_KASAN_DISABLE_NULL_POINTER_CHECK
+# ifndef CONFIG_MM_KASAN_DISABLE_NULL_POINTER_CHECK
if (predict_false(addr == NULL))
{
kasan_report(addr, size, is_write, return_address);
}
-#endif
+# endif
-#ifndef CONFIG_MM_KASAN_NONE
+# ifndef CONFIG_MM_KASAN_NONE
if (predict_false(kasan_is_poisoned(addr, size)))
{
kasan_report(addr, size, is_write, return_address);
}
-#endif
+# endif
-#if MM_KASAN_WATCHPOINT > 0
+# if MM_KASAN_WATCHPOINT > 0
kasan_check_watchpoint(addr, size, is_write, return_address);
+# endif
#endif
}
@@ -253,6 +257,7 @@ static inline void kasan_check_report(FAR const void *addr,
size_t size,
* Public Functions
****************************************************************************/
+#ifdef CONFIG_MM_KASAN
void kasan_start(void)
{
g_region_init = KASAN_INIT_VALUE;
@@ -262,6 +267,7 @@ void kasan_stop(void)
{
g_region_init = 0;
}
+#endif
/****************************************************************************
* Name: kasan_debugpoint