Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __ASM_UM_KASAN_H
0003 #define __ASM_UM_KASAN_H
0004 
0005 #include <linux/init.h>
0006 #include <linux/const.h>
0007 
0008 #define KASAN_SHADOW_OFFSET _AC(CONFIG_KASAN_SHADOW_OFFSET, UL)
0009 
0010 /* used in kasan_mem_to_shadow to divide by 8 */
0011 #define KASAN_SHADOW_SCALE_SHIFT 3
0012 
0013 #ifdef CONFIG_X86_64
0014 #define KASAN_HOST_USER_SPACE_END_ADDR 0x00007fffffffffffUL
0015 /* KASAN_SHADOW_SIZE is the size of total address space divided by 8 */
0016 #define KASAN_SHADOW_SIZE ((KASAN_HOST_USER_SPACE_END_ADDR + 1) >> \
0017             KASAN_SHADOW_SCALE_SHIFT)
0018 #else
0019 #error "KASAN_SHADOW_SIZE is not defined for this sub-architecture"
0020 #endif /* CONFIG_X86_64 */
0021 
0022 #define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET)
0023 #define KASAN_SHADOW_END (KASAN_SHADOW_START + KASAN_SHADOW_SIZE)
0024 
0025 #ifdef CONFIG_KASAN
0026 void kasan_init(void);
0027 void kasan_map_memory(void *start, unsigned long len);
0028 extern int kasan_um_is_ready;
0029 
0030 #ifdef CONFIG_STATIC_LINK
0031 #define kasan_arch_is_ready() (kasan_um_is_ready)
0032 #endif
0033 #else
0034 static inline void kasan_init(void) { }
0035 #endif /* CONFIG_KASAN */
0036 
0037 #endif /* __ASM_UM_KASAN_H */