aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/mm
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2016-03-17 07:47:12 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2016-03-17 08:18:25 -0400
commit91d37211769510ae0b4747045d8f81d3b9dd4278 (patch)
tree0e28a601b13c837111e41e64dafafea2a3bca93e /arch/s390/mm
parentdf9ceff906abf5edc284c11ac899b3b3f32b4dd3 (diff)
s390: add DEBUG_RODATA support
git commit d2aa1acad22f ("mm/init: Add 'rodata=off' boot cmdline parameter to disable read-only kernel mappings") adds a bogus warning to the console which states that s390 does not support kernel memory protection. This however is not true. We do support that since a couple of years however in a different way than the author of the above named patch expected. To get rid of the misleading message implement the mark_rodata_ro function and emit a message which states the amount of memory which was write protected already earlier. This is the same what parisc currently does. We currently do not support the kernel parameter "rodata=off" which would allow to write to the rodata section again. However since we have this feature since years without any problems there is no reason to add support for this. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/mm')
-rw-r--r--arch/s390/mm/init.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 73e290337092..c7b0451397d6 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -108,6 +108,13 @@ void __init paging_init(void)
108 free_area_init_nodes(max_zone_pfns); 108 free_area_init_nodes(max_zone_pfns);
109} 109}
110 110
111void mark_rodata_ro(void)
112{
113 /* Text and rodata are already protected. Nothing to do here. */
114 pr_info("Write protecting the kernel read-only data: %luk\n",
115 ((unsigned long)&_eshared - (unsigned long)&_stext) >> 10);
116}
117
111void __init mem_init(void) 118void __init mem_init(void)
112{ 119{
113 if (MACHINE_HAS_TLB_LC) 120 if (MACHINE_HAS_TLB_LC)
@@ -126,9 +133,6 @@ void __init mem_init(void)
126 setup_zero_pages(); /* Setup zeroed pages. */ 133 setup_zero_pages(); /* Setup zeroed pages. */
127 134
128 mem_init_print_info(NULL); 135 mem_init_print_info(NULL);
129 printk("Write protected kernel read-only data: %#lx - %#lx\n",
130 (unsigned long)&_stext,
131 PFN_ALIGN((unsigned long)&_eshared) - 1);
132} 136}
133 137
134void free_initmem(void) 138void free_initmem(void)