@@ -119,23 +119,26 @@ void __init mmu_mapin_immr(void)
119119 PAGE_KERNEL_NCG , MMU_PAGE_512K , true);
120120}
121121
122- static void mmu_mapin_ram_chunk (unsigned long offset , unsigned long top ,
123- pgprot_t prot , bool new )
122+ static int mmu_mapin_ram_chunk (unsigned long offset , unsigned long top ,
123+ pgprot_t prot , bool new )
124124{
125125 unsigned long v = PAGE_OFFSET + offset ;
126126 unsigned long p = offset ;
127+ int err = 0 ;
127128
128129 WARN_ON (!IS_ALIGNED (offset , SZ_512K ) || !IS_ALIGNED (top , SZ_512K ));
129130
130- for (; p < ALIGN (p , SZ_8M ) && p < top ; p += SZ_512K , v += SZ_512K )
131- __early_map_kernel_hugepage (v , p , prot , MMU_PAGE_512K , new );
132- for (; p < ALIGN_DOWN (top , SZ_8M ) && p < top ; p += SZ_8M , v += SZ_8M )
133- __early_map_kernel_hugepage (v , p , prot , MMU_PAGE_8M , new );
134- for (; p < ALIGN_DOWN (top , SZ_512K ) && p < top ; p += SZ_512K , v += SZ_512K )
135- __early_map_kernel_hugepage (v , p , prot , MMU_PAGE_512K , new );
131+ for (; p < ALIGN (p , SZ_8M ) && p < top && ! err ; p += SZ_512K , v += SZ_512K )
132+ err = __early_map_kernel_hugepage (v , p , prot , MMU_PAGE_512K , new );
133+ for (; p < ALIGN_DOWN (top , SZ_8M ) && p < top && ! err ; p += SZ_8M , v += SZ_8M )
134+ err = __early_map_kernel_hugepage (v , p , prot , MMU_PAGE_8M , new );
135+ for (; p < ALIGN_DOWN (top , SZ_512K ) && p < top && ! err ; p += SZ_512K , v += SZ_512K )
136+ err = __early_map_kernel_hugepage (v , p , prot , MMU_PAGE_512K , new );
136137
137138 if (!new )
138139 flush_tlb_kernel_range (PAGE_OFFSET + v , PAGE_OFFSET + top );
140+
141+ return err ;
139142}
140143
141144unsigned long __init mmu_mapin_ram (unsigned long base , unsigned long top )
@@ -166,27 +169,33 @@ unsigned long __init mmu_mapin_ram(unsigned long base, unsigned long top)
166169 return top ;
167170}
168171
169- void mmu_mark_initmem_nx (void )
172+ int mmu_mark_initmem_nx (void )
170173{
171174 unsigned long etext8 = ALIGN (__pa (_etext ), SZ_8M );
172175 unsigned long sinittext = __pa (_sinittext );
173176 unsigned long boundary = strict_kernel_rwx_enabled () ? sinittext : etext8 ;
174177 unsigned long einittext8 = ALIGN (__pa (_einittext ), SZ_8M );
178+ int err = 0 ;
175179
176180 if (!debug_pagealloc_enabled_or_kfence ())
177- mmu_mapin_ram_chunk (boundary , einittext8 , PAGE_KERNEL , false);
181+ err = mmu_mapin_ram_chunk (boundary , einittext8 , PAGE_KERNEL , false);
178182
179183 mmu_pin_tlb (block_mapped_ram , false);
184+
185+ return err ;
180186}
181187
182188#ifdef CONFIG_STRICT_KERNEL_RWX
183- void mmu_mark_rodata_ro (void )
189+ int mmu_mark_rodata_ro (void )
184190{
185191 unsigned long sinittext = __pa (_sinittext );
192+ int err ;
186193
187- mmu_mapin_ram_chunk (0 , sinittext , PAGE_KERNEL_ROX , false);
194+ err = mmu_mapin_ram_chunk (0 , sinittext , PAGE_KERNEL_ROX , false);
188195 if (IS_ENABLED (CONFIG_PIN_TLB_DATA ))
189196 mmu_pin_tlb (block_mapped_ram , true);
197+
198+ return err ;
190199}
191200#endif
192201
0 commit comments