mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 06:55:13 +08:00
x86: make sure initmem is writable
When we free initmem, various rodata and CPA checks may have left memory read only.. this patch ensures that the memory is writable before we free it. Signed-off-by: Arjan van de Ven <arjan@linux.intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
488fd99588
commit
3c1df68b84
@ -780,6 +780,13 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
|
||||
{
|
||||
unsigned long addr;
|
||||
|
||||
/*
|
||||
* We just marked the kernel text read only above, now that
|
||||
* we are going to free part of that, we need to make that
|
||||
* writeable first.
|
||||
*/
|
||||
set_memory_rw(begin, (end - begin) >> PAGE_SHIFT);
|
||||
|
||||
for (addr = begin; addr < end; addr += PAGE_SIZE) {
|
||||
ClearPageReserved(virt_to_page(addr));
|
||||
init_page_count(virt_to_page(addr));
|
||||
|
@ -570,6 +570,7 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
|
||||
* 2Mb kernel mapping just for this debug feature.
|
||||
*/
|
||||
if (begin >= __START_KERNEL_map) {
|
||||
set_memory_rw(begin, (end - begin)/PAGE_SIZE);
|
||||
set_memory_np(begin, (end - begin)/PAGE_SIZE);
|
||||
set_memory_nx(begin, (end - begin)/PAGE_SIZE);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user