aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/mm/kasan_init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm64/mm/kasan_init.c')
-rw-r--r--arch/arm64/mm/kasan_init.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm64/mm/kasan_init.c b/arch/arm64/mm/kasan_init.c
index cf038c7d9fa9..cab7a5be40aa 100644
--- a/arch/arm64/mm/kasan_init.c
+++ b/arch/arm64/mm/kasan_init.c
@@ -120,6 +120,7 @@ static void __init cpu_set_ttbr1(unsigned long ttbr1)
120void __init kasan_init(void) 120void __init kasan_init(void)
121{ 121{
122 struct memblock_region *reg; 122 struct memblock_region *reg;
123 int i;
123 124
124 /* 125 /*
125 * We are going to perform proper setup of shadow memory. 126 * We are going to perform proper setup of shadow memory.
@@ -155,6 +156,14 @@ void __init kasan_init(void)
155 pfn_to_nid(virt_to_pfn(start))); 156 pfn_to_nid(virt_to_pfn(start)));
156 } 157 }
157 158
159 /*
160 * KAsan may reuse the contents of kasan_zero_pte directly, so we
161 * should make sure that it maps the zero page read-only.
162 */
163 for (i = 0; i < PTRS_PER_PTE; i++)
164 set_pte(&kasan_zero_pte[i],
165 pfn_pte(virt_to_pfn(kasan_zero_page), PAGE_KERNEL_RO));
166
158 memset(kasan_zero_page, 0, PAGE_SIZE); 167 memset(kasan_zero_page, 0, PAGE_SIZE);
159 cpu_set_ttbr1(__pa(swapper_pg_dir)); 168 cpu_set_ttbr1(__pa(swapper_pg_dir));
160 flush_tlb_all(); 169 flush_tlb_all();