From eb38781741686e774bac7acb88f13805763ba015 Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 3 Mar 2009 13:15:04 +0200 Subject: [PATCH] --- yaml --- r: 137029 b: refs/heads/master c: e087edd8c056292191bb989baf49f83ee509e624 h: refs/heads/master i: 137027: b59ee595fe1291f364f0329f1072940416fc01ed v: v3 --- [refs] | 2 +- trunk/arch/x86/mm/init_64.c | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 45eef1b89b7c..32f341e4dfb2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 05f209e7b936a48e341d36831079116a06658ccc +refs/heads/master: e087edd8c056292191bb989baf49f83ee509e624 diff --git a/trunk/arch/x86/mm/init_64.c b/trunk/arch/x86/mm/init_64.c index e6d36b490250..03da9030d0ee 100644 --- a/trunk/arch/x86/mm/init_64.c +++ b/trunk/arch/x86/mm/init_64.c @@ -962,6 +962,13 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end) begin, PAGE_ALIGN(end)); set_memory_np(begin, (end - begin) >> PAGE_SHIFT); #else + /* + * 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); + printk(KERN_INFO "Freeing %s: %luk freed\n", what, (end - begin) >> 10); for (; addr < end; addr += PAGE_SIZE) {