kasan.h (8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17) kasan.h (41b7a347bf1491e7300563bb224432608b41f62a)
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASM_KASAN_H
3#define __ASM_KASAN_H
4
5#ifdef CONFIG_KASAN
6#define _GLOBAL_KASAN(fn) _GLOBAL(__##fn)
7#define _GLOBAL_TOC_KASAN(fn) _GLOBAL_TOC(__##fn)
8#define EXPORT_SYMBOL_KASAN(fn) EXPORT_SYMBOL(__##fn)

--- 16 unchanged lines hidden (view full) ---

25#define KASAN_KERN_START PAGE_OFFSET
26#endif
27
28#define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET + \
29 (KASAN_KERN_START >> KASAN_SHADOW_SCALE_SHIFT))
30
31#define KASAN_SHADOW_OFFSET ASM_CONST(CONFIG_KASAN_SHADOW_OFFSET)
32
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef __ASM_KASAN_H
3#define __ASM_KASAN_H
4
5#ifdef CONFIG_KASAN
6#define _GLOBAL_KASAN(fn) _GLOBAL(__##fn)
7#define _GLOBAL_TOC_KASAN(fn) _GLOBAL_TOC(__##fn)
8#define EXPORT_SYMBOL_KASAN(fn) EXPORT_SYMBOL(__##fn)

--- 16 unchanged lines hidden (view full) ---

25#define KASAN_KERN_START PAGE_OFFSET
26#endif
27
28#define KASAN_SHADOW_START (KASAN_SHADOW_OFFSET + \
29 (KASAN_KERN_START >> KASAN_SHADOW_SCALE_SHIFT))
30
31#define KASAN_SHADOW_OFFSET ASM_CONST(CONFIG_KASAN_SHADOW_OFFSET)
32
33#ifdef CONFIG_PPC32
33#define KASAN_SHADOW_END (-(-KASAN_SHADOW_START >> KASAN_SHADOW_SCALE_SHIFT))
34#define KASAN_SHADOW_END (-(-KASAN_SHADOW_START >> KASAN_SHADOW_SCALE_SHIFT))
35#elif defined(CONFIG_PPC_BOOK3S_64)
36/*
37 * The shadow ends before the highest accessible address
38 * because we don't need a shadow for the shadow. Instead:
39 * c00e000000000000 << 3 + a80e000000000000 = c00fc00000000000
40 */
41#define KASAN_SHADOW_END 0xc00fc00000000000UL
42#endif
34
35#ifdef CONFIG_KASAN
43
44#ifdef CONFIG_KASAN
45#ifdef CONFIG_PPC_BOOK3S_64
46DECLARE_STATIC_KEY_FALSE(powerpc_kasan_enabled_key);
47
48static __always_inline bool kasan_arch_is_ready(void)
49{
50 if (static_branch_likely(&powerpc_kasan_enabled_key))
51 return true;
52 return false;
53}
54
55#define kasan_arch_is_ready kasan_arch_is_ready
56#endif
57
36void kasan_early_init(void);
37void kasan_mmu_init(void);
38void kasan_init(void);
39void kasan_late_init(void);
40#else
41static inline void kasan_init(void) { }
42static inline void kasan_mmu_init(void) { }
43static inline void kasan_late_init(void) { }
44#endif
45
46void kasan_update_early_region(unsigned long k_start, unsigned long k_end, pte_t pte);
47int kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end);
48int kasan_init_region(void *start, size_t size);
49
50#endif /* __ASSEMBLY */
51#endif
58void kasan_early_init(void);
59void kasan_mmu_init(void);
60void kasan_init(void);
61void kasan_late_init(void);
62#else
63static inline void kasan_init(void) { }
64static inline void kasan_mmu_init(void) { }
65static inline void kasan_late_init(void) { }
66#endif
67
68void kasan_update_early_region(unsigned long k_start, unsigned long k_end, pte_t pte);
69int kasan_init_shadow_page_tables(unsigned long k_start, unsigned long k_end);
70int kasan_init_region(void *start, size_t size);
71
72#endif /* __ASSEMBLY */
73#endif