Signed-off-by: Thomas Meyer <tho...@m3y3r.de>
---
 arch/um/Kconfig.common |  1 +
 arch/um/kernel/mem.c   | 13 ++++++++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/arch/um/Kconfig.common b/arch/um/Kconfig.common
index 85f6dd2..061009b 100644
--- a/arch/um/Kconfig.common
+++ b/arch/um/Kconfig.common
@@ -2,6 +2,7 @@ config UML
        bool
        default y
        select ARCH_HAS_KCOV
+       select ARCH_HAS_STRICT_KERNEL_RWX
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_UID16
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index e7437ec..8705eff 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -12,6 +12,7 @@
 #include <linux/slab.h>
 #include <asm/fixmap.h>
 #include <asm/page.h>
+#include <asm/sections.h>
 #include <as-layout.h>
 #include <init.h>
 #include <kern.h>
@@ -168,7 +169,6 @@ void __init paging_init(void)
  * This can't do anything because nothing in the kernel image can be freed
  * since it's not in kernel physical memory.
  */
-
 void free_initmem(void)
 {
 }
@@ -238,3 +238,14 @@ void *uml_kmalloc(int size, int flags)
 {
        return kmalloc(size, flags);
 }
+
+void mark_rodata_ro(void)
+{
+       /* rodata_start/end must be PAGE_SIZE aligend! */
+       unsigned long rodata_start = (unsigned long) __start_rodata;
+       unsigned long rodata_end = (unsigned long) __end_rodata;
+
+       printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n",
+              (rodata_end - rodata_start) >> 10);
+       os_protect_memory((void*)rodata_start, (rodata_end - rodata_start), 1, 
0, 0);
+}

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel

Reply via email to