^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #ifndef __ASM_KASAN_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) #define __ASM_KASAN_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #ifdef CONFIG_KASAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define _GLOBAL_KASAN(fn) _GLOBAL(__##fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define _GLOBAL_TOC_KASAN(fn) _GLOBAL_TOC(__##fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define EXPORT_SYMBOL_KASAN(fn) EXPORT_SYMBOL(__##fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #define _GLOBAL_KASAN(fn) _GLOBAL(fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define _GLOBAL_TOC_KASAN(fn) _GLOBAL_TOC(fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define EXPORT_SYMBOL_KASAN(fn)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #ifndef __ASSEMBLY__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #include <asm/page.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #include <linux/sizes.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define KASAN_SHADOW_SCALE_SHIFT 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #if defined(CONFIG_PPC_BOOK3S_32) && defined(CONFIG_MODULES) && defined(CONFIG_STRICT_KERNEL_RWX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define KASAN_KERN_START ALIGN_DOWN(PAGE_OFFSET - SZ_256M, SZ_256M)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define KASAN_KERN_START PAGE_OFFSET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) #define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET + \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) (KASAN_KERN_START >> KASAN_SHADOW_SCALE_SHIFT))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) #define KASAN_SHADOW_OFFSET ASM_CONST(CONFIG_KASAN_SHADOW_OFFSET)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) #define KASAN_SHADOW_END (-(-KASAN_SHADOW_START >> KASAN_SHADOW_SCALE_SHIFT))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #ifdef CONFIG_KASAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) void kasan_early_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) void kasan_mmu_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) void kasan_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) void kasan_late_init(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) static inline void kasan_init(void) { }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) static inline void kasan_mmu_init(void) { }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) static inline void kasan_late_init(void) { }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) void kasan_update_early_region(unsigned long k_start, unsigned long k_end, pte_t pte);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) int kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) int kasan_init_region(void *start, size_t size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) #endif /* __ASSEMBLY */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #endif