|
@@ -810,6 +810,7 @@ void mark_rodata_ro(void)
|
|
|
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 all_end = PFN_ALIGN(&_end);
|
|
|
|
|
|
printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n",
|
|
|
(end - start) >> 10);
|
|
@@ -818,10 +819,10 @@ void mark_rodata_ro(void)
|
|
|
kernel_set_to_readonly = 1;
|
|
|
|
|
|
/*
|
|
|
- * The rodata section (but not the kernel text!) should also be
|
|
|
- * not-executable.
|
|
|
+ * The rodata/data/bss/brk section (but not the kernel text!)
|
|
|
+ * should also be not-executable.
|
|
|
*/
|
|
|
- set_memory_nx(rodata_start, (end - rodata_start) >> PAGE_SHIFT);
|
|
|
+ set_memory_nx(rodata_start, (all_end - rodata_start) >> PAGE_SHIFT);
|
|
|
|
|
|
rodata_test();
|
|
|
|