|
60 | 60 | extern bool kasan_early_stage;
|
61 | 61 | extern unsigned char kasan_early_shadow_page[PAGE_SIZE];
|
62 | 62 |
|
63 |
| -#define kasan_arch_is_ready kasan_arch_is_ready |
64 |
| -static __always_inline bool kasan_arch_is_ready(void) |
65 |
| -{ |
66 |
| - return !kasan_early_stage; |
67 |
| -} |
68 |
| - |
69 | 63 | #define kasan_mem_to_shadow kasan_mem_to_shadow
|
70 |
| -static inline void *kasan_mem_to_shadow(const void *addr) |
71 |
| -{ |
72 |
| - if (!kasan_arch_is_ready()) { |
73 |
| - return (void *)(kasan_early_shadow_page); |
74 |
| - } else { |
75 |
| - unsigned long maddr = (unsigned long)addr; |
76 |
| - unsigned long xrange = (maddr >> XRANGE_SHIFT) & 0xffff; |
77 |
| - unsigned long offset = 0; |
78 |
| - |
79 |
| - maddr &= XRANGE_SHADOW_MASK; |
80 |
| - switch (xrange) { |
81 |
| - case XKPRANGE_CC_SEG: |
82 |
| - offset = XKPRANGE_CC_SHADOW_OFFSET; |
83 |
| - break; |
84 |
| - case XKPRANGE_UC_SEG: |
85 |
| - offset = XKPRANGE_UC_SHADOW_OFFSET; |
86 |
| - break; |
87 |
| - case XKVRANGE_VC_SEG: |
88 |
| - offset = XKVRANGE_VC_SHADOW_OFFSET; |
89 |
| - break; |
90 |
| - default: |
91 |
| - WARN_ON(1); |
92 |
| - return NULL; |
93 |
| - } |
94 |
| - |
95 |
| - return (void *)((maddr >> KASAN_SHADOW_SCALE_SHIFT) + offset); |
96 |
| - } |
97 |
| -} |
| 64 | +void *kasan_mem_to_shadow(const void *addr); |
98 | 65 |
|
99 | 66 | #define kasan_shadow_to_mem kasan_shadow_to_mem
|
100 |
| -static inline const void *kasan_shadow_to_mem(const void *shadow_addr) |
| 67 | +const void *kasan_shadow_to_mem(const void *shadow_addr); |
| 68 | + |
| 69 | +#define kasan_arch_is_ready kasan_arch_is_ready |
| 70 | +static __always_inline bool kasan_arch_is_ready(void) |
101 | 71 | {
|
102 |
| - unsigned long addr = (unsigned long)shadow_addr; |
103 |
| - |
104 |
| - if (unlikely(addr > KASAN_SHADOW_END) || |
105 |
| - unlikely(addr < KASAN_SHADOW_START)) { |
106 |
| - WARN_ON(1); |
107 |
| - return NULL; |
108 |
| - } |
109 |
| - |
110 |
| - if (addr >= XKVRANGE_VC_SHADOW_OFFSET) |
111 |
| - return (void *)(((addr - XKVRANGE_VC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKVRANGE_VC_START); |
112 |
| - else if (addr >= XKPRANGE_UC_SHADOW_OFFSET) |
113 |
| - return (void *)(((addr - XKPRANGE_UC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKPRANGE_UC_START); |
114 |
| - else if (addr >= XKPRANGE_CC_SHADOW_OFFSET) |
115 |
| - return (void *)(((addr - XKPRANGE_CC_SHADOW_OFFSET) << KASAN_SHADOW_SCALE_SHIFT) + XKPRANGE_CC_START); |
116 |
| - else { |
117 |
| - WARN_ON(1); |
118 |
| - return NULL; |
119 |
| - } |
| 72 | + return !kasan_early_stage; |
120 | 73 | }
|
121 | 74 |
|
122 | 75 | #define addr_has_metadata addr_has_metadata
|
|
0 commit comments