aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/init_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/mm/init_64.c')
-rw-r--r--arch/x86/mm/init_64.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 7dafd4159ad..0ed09fad6aa 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -727,9 +727,13 @@ void set_kernel_text_ro(void)
727 727
728void mark_rodata_ro(void) 728void mark_rodata_ro(void)
729{ 729{
730 unsigned long start = PFN_ALIGN(_text), end = PFN_ALIGN(__end_rodata); 730 unsigned long start = PFN_ALIGN(_text);
731 unsigned long rodata_start = 731 unsigned long rodata_start =
732 ((unsigned long)__start_rodata + PAGE_SIZE - 1) & PAGE_MASK; 732 ((unsigned long)__start_rodata + PAGE_SIZE - 1) & PAGE_MASK;
733 unsigned long end = (unsigned long) &__end_rodata_hpage_align;
734 unsigned long text_end = PAGE_ALIGN((unsigned long) &__stop___ex_table);
735 unsigned long rodata_end = PAGE_ALIGN((unsigned long) &__end_rodata);
736 unsigned long data_start = (unsigned long) &_sdata;
733 737
734 printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n", 738 printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n",
735 (end - start) >> 10); 739 (end - start) >> 10);
@@ -752,6 +756,14 @@ void mark_rodata_ro(void)
752 printk(KERN_INFO "Testing CPA: again\n"); 756 printk(KERN_INFO "Testing CPA: again\n");
753 set_memory_ro(start, (end-start) >> PAGE_SHIFT); 757 set_memory_ro(start, (end-start) >> PAGE_SHIFT);
754#endif 758#endif
759
760 free_init_pages("unused kernel memory",
761 (unsigned long) page_address(virt_to_page(text_end)),
762 (unsigned long)
763 page_address(virt_to_page(rodata_start)));
764 free_init_pages("unused kernel memory",
765 (unsigned long) page_address(virt_to_page(rodata_end)),
766 (unsigned long) page_address(virt_to_page(data_start)));
755} 767}
756 768
757#endif 769#endif