|
@@ -770,12 +770,10 @@ void set_kernel_text_ro(void)
|
|
|
void mark_rodata_ro(void)
|
|
|
{
|
|
|
unsigned long start = PFN_ALIGN(_text);
|
|
|
- unsigned long rodata_start =
|
|
|
- ((unsigned long)__start_rodata + PAGE_SIZE - 1) & PAGE_MASK;
|
|
|
+ unsigned long rodata_start = PFN_ALIGN(__start_rodata);
|
|
|
unsigned long end = (unsigned long) &__end_rodata_hpage_align;
|
|
|
- unsigned long text_end = PAGE_ALIGN((unsigned long) &__stop___ex_table);
|
|
|
- unsigned long rodata_end = PAGE_ALIGN((unsigned long) &__end_rodata);
|
|
|
- unsigned long data_start = (unsigned long) &_sdata;
|
|
|
+ unsigned long text_end = PFN_ALIGN(&__stop___ex_table);
|
|
|
+ unsigned long rodata_end = PFN_ALIGN(&__end_rodata);
|
|
|
|
|
|
printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n",
|
|
|
(end - start) >> 10);
|
|
@@ -800,12 +798,12 @@ void mark_rodata_ro(void)
|
|
|
#endif
|
|
|
|
|
|
free_init_pages("unused kernel memory",
|
|
|
- (unsigned long) page_address(virt_to_page(text_end)),
|
|
|
- (unsigned long)
|
|
|
- page_address(virt_to_page(rodata_start)));
|
|
|
+ (unsigned long) __va(__pa_symbol(text_end)),
|
|
|
+ (unsigned long) __va(__pa_symbol(rodata_start)));
|
|
|
+
|
|
|
free_init_pages("unused kernel memory",
|
|
|
- (unsigned long) page_address(virt_to_page(rodata_end)),
|
|
|
- (unsigned long) page_address(virt_to_page(data_start)));
|
|
|
+ (unsigned long) __va(__pa_symbol(rodata_end)),
|
|
|
+ (unsigned long) __va(__pa_symbol(_sdata)));
|
|
|
}
|
|
|
|
|
|
#endif
|