12
12
#include <asm/code-patching.h>
13
13
#include <mm/mmu_decl.h>
14
14
15
+ static pgprot_t kasan_prot_ro (void )
16
+ {
17
+ if (early_mmu_has_feature (MMU_FTR_HPTE_TABLE ))
18
+ return PAGE_READONLY ;
19
+
20
+ return PAGE_KERNEL_RO ;
21
+ }
22
+
15
23
static void kasan_populate_pte (pte_t * ptep , pgprot_t prot )
16
24
{
17
25
unsigned long va = (unsigned long )kasan_early_shadow_page ;
@@ -26,6 +34,7 @@ static int __ref kasan_init_shadow_page_tables(unsigned long k_start, unsigned l
26
34
{
27
35
pmd_t * pmd ;
28
36
unsigned long k_cur , k_next ;
37
+ pgprot_t prot = kasan_prot_ro ();
29
38
30
39
pmd = pmd_offset (pud_offset (pgd_offset_k (k_start ), k_start ), k_start );
31
40
@@ -43,10 +52,7 @@ static int __ref kasan_init_shadow_page_tables(unsigned long k_start, unsigned l
43
52
44
53
if (!new )
45
54
return - ENOMEM ;
46
- if (early_mmu_has_feature (MMU_FTR_HPTE_TABLE ))
47
- kasan_populate_pte (new , PAGE_READONLY );
48
- else
49
- kasan_populate_pte (new , PAGE_KERNEL_RO );
55
+ kasan_populate_pte (new , prot );
50
56
51
57
smp_wmb (); /* See comment in __pte_alloc */
52
58
@@ -103,10 +109,9 @@ static int __ref kasan_init_region(void *start, size_t size)
103
109
104
110
static void __init kasan_remap_early_shadow_ro (void )
105
111
{
106
- if (early_mmu_has_feature (MMU_FTR_HPTE_TABLE ))
107
- kasan_populate_pte (kasan_early_shadow_pte , PAGE_READONLY );
108
- else
109
- kasan_populate_pte (kasan_early_shadow_pte , PAGE_KERNEL_RO );
112
+ pgprot_t prot = kasan_prot_ro ();
113
+
114
+ kasan_populate_pte (kasan_early_shadow_pte , prot );
110
115
111
116
flush_tlb_kernel_range (KASAN_SHADOW_START , KASAN_SHADOW_END );
112
117
}
0 commit comments