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

Reply via email to