aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/realmode.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/realmode.c')
-rw-r--r--arch/x86/kernel/realmode.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/x86/kernel/realmode.c b/arch/x86/kernel/realmode.c
index a465775b32f..d85ac20bb4e 100644
--- a/arch/x86/kernel/realmode.c
+++ b/arch/x86/kernel/realmode.c
@@ -86,7 +86,21 @@ static int __init set_real_mode_permissions(void)
86 PAGE_ALIGN(real_mode_header.end) - 86 PAGE_ALIGN(real_mode_header.end) -
87 __pa(real_mode_base); 87 __pa(real_mode_base);
88 88
89 set_memory_x((unsigned long) real_mode_base, all_size >> PAGE_SHIFT); 89 size_t ro_size =
90 PAGE_ALIGN(real_mode_header.ro_end) -
91 __pa(real_mode_base);
92
93 size_t text_size =
94 PAGE_ALIGN(real_mode_header.ro_end) -
95 real_mode_header.text_start;
96
97 unsigned long text_start =
98 (unsigned long) __va(real_mode_header.text_start);
99
100 set_memory_nx((unsigned long) real_mode_base, all_size >> PAGE_SHIFT);
101 set_memory_ro((unsigned long) real_mode_base, ro_size >> PAGE_SHIFT);
102 set_memory_x((unsigned long) text_start, text_size >> PAGE_SHIFT);
103
90 return 0; 104 return 0;
91} 105}
92 106