|
@@ -710,6 +710,8 @@ void mark_rodata_ro(void)
|
|
unsigned long start = PFN_ALIGN(_text);
|
|
unsigned long start = PFN_ALIGN(_text);
|
|
unsigned long size = PFN_ALIGN(_etext) - start;
|
|
unsigned long size = PFN_ALIGN(_etext) - start;
|
|
|
|
|
|
|
|
+#ifndef CONFIG_DYNAMIC_FTRACE
|
|
|
|
+ /* Dynamic tracing modifies the kernel text section */
|
|
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
|
|
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
|
|
printk(KERN_INFO "Write protecting the kernel text: %luk\n",
|
|
printk(KERN_INFO "Write protecting the kernel text: %luk\n",
|
|
size >> 10);
|
|
size >> 10);
|
|
@@ -722,6 +724,8 @@ void mark_rodata_ro(void)
|
|
printk(KERN_INFO "Testing CPA: write protecting again\n");
|
|
printk(KERN_INFO "Testing CPA: write protecting again\n");
|
|
set_pages_ro(virt_to_page(start), size>>PAGE_SHIFT);
|
|
set_pages_ro(virt_to_page(start), size>>PAGE_SHIFT);
|
|
#endif
|
|
#endif
|
|
|
|
+#endif /* CONFIG_DYNAMIC_FTRACE */
|
|
|
|
+
|
|
start += size;
|
|
start += size;
|
|
size = (unsigned long)__end_rodata - start;
|
|
size = (unsigned long)__end_rodata - start;
|
|
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
|
|
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
|